diff --git a/.editorconfig b/.editorconfig new file mode 100644 index 0000000..a0cb1cc --- /dev/null +++ b/.editorconfig @@ -0,0 +1,27 @@ +root = true + +[*] +indent_style = space +end_of_line = lf +insert_final_newline = true +trim_trailing_whitespace = true +charset = utf-8 + +[*.py] +indent_size = 4 +max_line_length = 100 + +[*.html] +indent_size = 2 + +[*.css] +indent_size = 2 + +[{*.yml,*.yaml}] +indent_size = 2 + +[*.ini] +indent_size = 4 + +[*.sh] +indent_size = 2 diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..7cbb13f --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,50 @@ +name: ci +on: + pull_request: + push: + branches: + - master + +jobs: + lint: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: hoverkraft-tech/compose-action@v2.0.1 + with: + compose-file: | + docker-compose.yml + docker-compose.override.yml + - run: | + docker compose exec django tox -e lint + + lint-client: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: actions/setup-node@v3 + - run: cd client && npm i && npm run lint + + pytest: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: hoverkraft-tech/compose-action@v2.0.1 + with: + compose-file: | + docker-compose.yml + docker-compose.override.yml + - run: | + docker compose exec django tox -e test + + check-migrations: + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - uses: hoverkraft-tech/compose-action@v2.0.1 + with: + compose-file: | + docker-compose.yml + docker-compose.override.yml + - run: | + docker compose exec django tox -e check-migrations diff --git a/.gitignore b/.gitignore new file mode 100644 index 0000000..dedad3a --- /dev/null +++ b/.gitignore @@ -0,0 +1,135 @@ +.terraform/ +postgres/* +minio/* +rabbitmq/* +.vscode/ +staticfiles/ +**/.DS_Store +# osmnx data cache folder +cache + +# Created by https://www.gitignore.io/api/django +# Edit at https://www.gitignore.io/?templates=django + +### Django ### +*.log +*.pot +*.pyc +__pycache__/ +local_settings.py +db.sqlite3 +db.sqlite3-journal +media + +# If your build process includes running collectstatic, then you probably don't need or want to include staticfiles/ +# in your Git repository. Update and uncomment the following line accordingly. +# /staticfiles/ + +### Django.Python Stack ### +# Byte-compiled / optimized / DLL files +*.py[cod] +*$py.class + +# C extensions +*.so + +# Distribution / packaging +.Python +build/ +develop-eggs/ +dist/ +downloads/ +eggs/ +.eggs/ +lib/ +lib64/ +parts/ +sdist/ +var/ +wheels/ +pip-wheel-metadata/ +share/python-wheels/ +*.egg-info/ +.installed.cfg +*.egg +MANIFEST + +# PyInstaller +# Usually these files are written by a python script from a template +# before PyInstaller builds the exe, so as to inject date/other infos into it. +*.manifest +*.spec + +# Installer logs +pip-log.txt +pip-delete-this-directory.txt + +# Unit test / coverage reports +htmlcov/ +.tox/ +.nox/ +.coverage +.coverage.* +.cache +nosetests.xml +coverage.xml +*.cover +.hypothesis/ +.pytest_cache/ + +# Translations +*.mo + +# Scrapy stuff: +.scrapy + +# Sphinx documentation +docs/_build/ + +# PyBuilder +target/ + +# pyenv +.python-version + +# pipenv +# According to pypa/pipenv#598, it is recommended to include Pipfile.lock in version control. +# However, in case of collaboration, if having platform-specific dependencies or dependencies +# having no cross-platform support, pipenv may install dependencies that don't work, or not +# install all needed dependencies. +#Pipfile.lock + +# celery beat schedule file +celerybeat-schedule + +# SageMath parsed files +*.sage.py + +# Spyder project settings +.spyderproject +.spyproject + +# Rope project settings +.ropeproject + +# Mr Developer +.mr.developer.cfg +.project +.pydevproject + +# mkdocs documentation +/site + +# mypy +.mypy_cache/ +.dmypy.json +dmypy.json + +# Pyre type checker +.pyre/ + +# End of https://www.gitignore.io/api/django + + +# Add direnv support +.envrc diff --git a/CHANGELOG.md b/CHANGELOG.md new file mode 100644 index 0000000..a755b76 --- /dev/null +++ b/CHANGELOG.md @@ -0,0 +1,838 @@ +# CHANGELOG + +## v0.3.0 (2024-08-21) + +### Feature + +* feat: Add import script to load county networks from exported geojson files ([`0bb90a4`](https://github.com/OpenGeoscience/uvdat/commit/0bb90a432686168797fbde5c5a4f3ba935208027)) + +### Fix + +* fix: remove unintentional quotes ([`296dc78`](https://github.com/OpenGeoscience/uvdat/commit/296dc7865d37dc0bbed1e0838e29a6df31793589)) + +* fix: filter properties upon import (key and value must exist) ([`e2c7549`](https://github.com/OpenGeoscience/uvdat/commit/e2c754949ff2ca66e7b67bdca4c9fb55f4aadbcb)) + +* fix: remove other usages of module reference for nysdp datasets ([`ee55020`](https://github.com/OpenGeoscience/uvdat/commit/ee550201c20bd724d02a7d736a8807d88afb001b)) + +* fix: ingest contexts before charts ([`df98b5d`](https://github.com/OpenGeoscience/uvdat/commit/df98b5d72ac16471c55127e58327d1b587089276)) + +* fix: `network.dataset` -> `dataset` ([`f859588`](https://github.com/OpenGeoscience/uvdat/commit/f859588f1e5d4142dec8c2c40db4974757ed48f4)) + +* fix: only delete old map layers at beginning of dataset ingest ([`d71c90a`](https://github.com/OpenGeoscience/uvdat/commit/d71c90a73d9ff28ab4adddfc2f5478bf01efa904)) + +* fix: Small bug fixes ([`478f58a`](https://github.com/OpenGeoscience/uvdat/commit/478f58a1f2d2e2b757a4058e4a14679e7ee7203a)) + +* fix: Improve speed and accuracy of network interpretation algorithm ([`29650e7`](https://github.com/OpenGeoscience/uvdat/commit/29650e70397b367d066e23e575441330b31368f5)) + +### Refactor + +* refactor: Rename `vector_features_from_network` -> `create_vector_features_from_network` ([`a287c78`](https://github.com/OpenGeoscience/uvdat/commit/a287c78f0ba11aa945792c39899a94955b66fa67)) + +* refactor: create ingest modules with `convert_dataset` function for each use case ([`48a769d`](https://github.com/OpenGeoscience/uvdat/commit/48a769d0511dee3dbf929b779ca198885d00b15c)) + +* refactor: remove unnecessary string casting ([`fb2cb07`](https://github.com/OpenGeoscience/uvdat/commit/fb2cb073be55d6fd22e78376fc22978efc660c60)) + +### Style + +* style: Additional style fixes ([`3f18006`](https://github.com/OpenGeoscience/uvdat/commit/3f180067ba6ee44ff9c0f7a9d6ac06840180d09e)) + +* style: Reformat with tox ([`0f985c9`](https://github.com/OpenGeoscience/uvdat/commit/0f985c96452d0fa834b371f990b045af85e4d29c)) + +### Test + +* test: adjust expected number of contexts in populate test ([`11c2c83`](https://github.com/OpenGeoscience/uvdat/commit/11c2c8315b49076709ab9bd46cdda90e549ab690)) + +### Unknown + +* Merge pull request #45 from OpenGeoscience/use_cases + +Add New York Energy use case to populate script ([`221fdf2`](https://github.com/OpenGeoscience/uvdat/commit/221fdf26e44e65a8514bee814de1562cb857517b)) + +* wip: interpret network from vector features ([`0257833`](https://github.com/OpenGeoscience/uvdat/commit/02578334512437121fcec1f27aeff45b00b2041c)) + +* Add a function to consolidate nysdp features ([`d499531`](https://github.com/OpenGeoscience/uvdat/commit/d4995314b02ff50b30cb633f4dca8dc09a9af0ed)) + +* Add module-based dataset loading ([`48e0a22`](https://github.com/OpenGeoscience/uvdat/commit/48e0a2249c8b4331f56d3b3c35a1561c4dbf023d)) + +* Reorganize sample_data folder to accomodate multiple use cases ([`cfa32a8`](https://github.com/OpenGeoscience/uvdat/commit/cfa32a87f5425578ba886540ad081391c797cdc7)) + +## v0.2.0 (2024-08-21) + +### Feature + +* feat: Add rest viewsets for file item and network models ([`53e54e5`](https://github.com/OpenGeoscience/uvdat/commit/53e54e5dfdb6c530f8238e7be671afb2dbcc13d0)) + +### Fix + +* fix: remove old name reference ([`bfd69c2`](https://github.com/OpenGeoscience/uvdat/commit/bfd69c2f7fd8e16cd8e39424d03f22f72c21bc9f)) + +* fix: undo change to expected number of contexts ([`48fe642`](https://github.com/OpenGeoscience/uvdat/commit/48fe642555bbfe995f57151ccfe5a99ebdf6349e)) + +* fix: Small bug fixes ([`87279bc`](https://github.com/OpenGeoscience/uvdat/commit/87279bce6a19bec2f4979c7f381913734ad9d655)) + +### Refactor + +* refactor: apply suggested changes ([`f50de69`](https://github.com/OpenGeoscience/uvdat/commit/f50de697a5dc8abb7e98b00d17b233cf69fa82a1)) + +### Style + +* style: reformat with black ([`431537b`](https://github.com/OpenGeoscience/uvdat/commit/431537b5e495be578f2a30c588d3a893e7ac4413)) + +* style: Lint fixes ([`d7c6ef6`](https://github.com/OpenGeoscience/uvdat/commit/d7c6ef6f6bb2915305a495e649a07cf02456b1cc)) + +### Test + +* test: Update OSMnx test expected number of nodes and edges ([`95c8c8a`](https://github.com/OpenGeoscience/uvdat/commit/95c8c8a729538bc515676c8600a35f28a2612dab)) + +### Unknown + +* Merge pull request #46 from OpenGeoscience/model-changes + +Networks & File Items ([`79e6ca7`](https://github.com/OpenGeoscience/uvdat/commit/79e6ca7b145a6e2477fcac210fba5f59ae94a0d8)) + +* Add Network model; allow multiple networks on a single dataset ([`6e0e132`](https://github.com/OpenGeoscience/uvdat/commit/6e0e132d5024518e99c462df4aac286f3c8f68d0)) + +* Make file_item relation optional (a MapLayer can exist on a Dataset without a FileItem) ([`4c480f6`](https://github.com/OpenGeoscience/uvdat/commit/4c480f60aae3a93332b23ae65d890f2bf82adbc1)) + +## v0.1.0 (2024-08-19) + +### Feature + +* feat: pin dependency versions in `setup.py` ([`2f3b671`](https://github.com/OpenGeoscience/uvdat/commit/2f3b671a2a84ffbbe0905a07c0988a6418bdbe67)) + +### Test + +* test: try different docker compose action ([`05442e7`](https://github.com/OpenGeoscience/uvdat/commit/05442e783dfe91bc0353d718a5c13cc74a5ad674)) + +### Unknown + +* Merge pull request #47 from OpenGeoscience/freeze-deps + +Pin dependency versions ([`c40ca74`](https://github.com/OpenGeoscience/uvdat/commit/c40ca74b1c0a2de6c6f37bdf48760d3edd828b71)) + +* Merge pull request #48 from OpenGeoscience/ci-action + +Change docker compose GH Action ([`f6f7e57`](https://github.com/OpenGeoscience/uvdat/commit/f6f7e5763f23ff91139c9de69c1ce0d5d4f59c22)) + +* Merge pull request #38 from OpenGeoscience/osmnx-roads + +Add endpoint to pull road network from osmnx ([`fbda461`](https://github.com/OpenGeoscience/uvdat/commit/fbda461c94a55202f3b178b1add38cfc3189500d)) + +* Reorder imports in `osmnx.py` ([`8721125`](https://github.com/OpenGeoscience/uvdat/commit/8721125536cbbcf8b75a01c21e4e05c3973365a4)) + +* Implement as both REST endpoint and management command ([`8378cc1`](https://github.com/OpenGeoscience/uvdat/commit/8378cc113d1bc170f6ce62df2190fe8a993511f7)) + +* Rebase migrations ([`96e3167`](https://github.com/OpenGeoscience/uvdat/commit/96e316783c1f5f40ce4096e9651b61e56323277e)) + +* Remove edge name duplicate logic ([`cf81818`](https://github.com/OpenGeoscience/uvdat/commit/cf8181831e982d055e4b81d5829834a6a32c51d7)) + +* Apply style changes ([`713d421`](https://github.com/OpenGeoscience/uvdat/commit/713d421e931f772874481ece4a22da24046de423)) + +* Move load_roads to an API endpoint on the Context model ([`4dc8082`](https://github.com/OpenGeoscience/uvdat/commit/4dc80823d081ffcfa1f7fc9e6155f455976d8c9b)) + +* Add osmnx cache folder to gitignore ([`903d5b0`](https://github.com/OpenGeoscience/uvdat/commit/903d5b04ba3ab5fcca924742a78d20bd76b6b0cc)) + +* Allow duplicate node/edge names (same roads can exist in multiple cities) ([`fe464bf`](https://github.com/OpenGeoscience/uvdat/commit/fe464bfebbaab82507f24cf5e856c7301f36ce97)) + +* Add a management command to pull road network from osmnx ([`0c29401`](https://github.com/OpenGeoscience/uvdat/commit/0c294012998142af2fbfd71b3746b24d213327a8)) + +* Merge pull request #43 from OpenGeoscience/postgis-vector-tiles + +Generate vector tiles dynamically from extracted features ([`a85b7d1`](https://github.com/OpenGeoscience/uvdat/commit/a85b7d1e891c65c48db869fb88b22f5e4233d070)) + +* Fix import formatting ([`d88e5ce`](https://github.com/OpenGeoscience/uvdat/commit/d88e5ceba31eba3b2493b1f9dd3adaa41027bf45)) + +* Fix type inconsistencies ([`0bf5975`](https://github.com/OpenGeoscience/uvdat/commit/0bf59753fb4f94b648a1d524e1faca3695ccb672)) + +* Save vector features after map layer modification ([`714187d`](https://github.com/OpenGeoscience/uvdat/commit/714187d72ddd5e0117153d3a334a1e23041f53e8)) + +* Add admin class for VectorFeature ([`bab350a`](https://github.com/OpenGeoscience/uvdat/commit/bab350a841db2ded8ab3ee1b7a744cae51de949e)) + +* Fix vector feature imports ([`dce8516`](https://github.com/OpenGeoscience/uvdat/commit/dce851636f4173021f54263947b4a52f297cc066)) + +* Move save_vector_features to create_vector_map_layer ([`d854226`](https://github.com/OpenGeoscience/uvdat/commit/d854226069a55c55cb302e54214a426b2deb9615)) + +* Squash migrations ([`25ce2b7`](https://github.com/OpenGeoscience/uvdat/commit/25ce2b7d0a990b8dc1a64202e977cfe7132356aa)) + +* Remove VectorTile and use of tile_extents ([`d4041cf`](https://github.com/OpenGeoscience/uvdat/commit/d4041cf76e002769f1ffaca8f70635ce846b3b6a)) + +* Remove use of OL tileUrlFunction ([`41e6bc5`](https://github.com/OpenGeoscience/uvdat/commit/41e6bc5c4f4aec9f8672535525a99dab4f08f0b7)) + +* Generate vector tiles dynamically from extracted features ([`90bd64f`](https://github.com/OpenGeoscience/uvdat/commit/90bd64f61e001f17cce2194cf041a906d9b51360)) + +## v0.0.0 (2024-06-20) + +### Unknown + +* Merge pull request #40 from OpenGeoscience/publish-docker-images + +Publishing server code as Docker image ([`bca73f4`](https://github.com/OpenGeoscience/uvdat/commit/bca73f45874b41e9695876180684be7a739191a7)) + +* Add python semantic versioning step to generate tag for image ([`52ba359`](https://github.com/OpenGeoscience/uvdat/commit/52ba359fb4ae0a8c1a551f1123d287bbfeb2f3bd)) + +* Prepend tag with registry URL ([`2546276`](https://github.com/OpenGeoscience/uvdat/commit/25462766a452cb3c5929c952c6615848717a15b6)) + +* Modify image name (must be all lowercase) ([`bf55c7b`](https://github.com/OpenGeoscience/uvdat/commit/bf55c7b039b8018769041b5b32b7cfa76d1b5422)) + +* Modify Dockerfile for portability and add publishing workflow ([`46cd17f`](https://github.com/OpenGeoscience/uvdat/commit/46cd17fdd57336bb6517ffc30c3a0522b1cf0727)) + +* Merge pull request #37 from OpenGeoscience/update-readme + +Create a docs folder and improve README ([`b371373`](https://github.com/OpenGeoscience/uvdat/commit/b371373c1f81ec56b868ff04e6d0d26215be05fa)) + +* Remove uvdat_flow image ([`3dbeb10`](https://github.com/OpenGeoscience/uvdat/commit/3dbeb102a3f77a454cbf1d0f92b7f5c63036ba1c)) + +* Fix typo in "representations" ([`1012c94`](https://github.com/OpenGeoscience/uvdat/commit/1012c949269aeaa0e1286b8b33cafd0ebc89f751)) + +* Replace "Girder 4" with "Resonant" in README ([`e1ec12d`](https://github.com/OpenGeoscience/uvdat/commit/e1ec12d5c10a1b4987b5ce008149acbb2077633f)) + +* Editorial changes + +Signed-off-by: Anne Haley <anne.haley@kitware.com> ([`3a60b97`](https://github.com/OpenGeoscience/uvdat/commit/3a60b97b926eab960dac05f49ba5cf5c3a07018c)) + +* Add more links to README ([`a6835fb`](https://github.com/OpenGeoscience/uvdat/commit/a6835fb15afb19d585317129916a14d0a910e9f8)) + +* Add container around images for inline display ([`0c4e88c`](https://github.com/OpenGeoscience/uvdat/commit/0c4e88c0d372f04b2c0c7f2cc6950971e2af953d)) + +* Create a docs folder and improve README ([`4222b7b`](https://github.com/OpenGeoscience/uvdat/commit/4222b7b52ab5d90713a822d76592bbf5fd964b08)) + +* Merge pull request #42 from OpenGeoscience/dev-improvements + +Dev improvements ([`ed7d9d9`](https://github.com/OpenGeoscience/uvdat/commit/ed7d9d95cba33e0dc476539c8e612c9829abb1a3)) + +* Add support for direnv ([`3edba6b`](https://github.com/OpenGeoscience/uvdat/commit/3edba6bf970e0d656e5742f1e621080c5cf20426)) + +* Use env vars for database connection info ([`81eaef9`](https://github.com/OpenGeoscience/uvdat/commit/81eaef92bcc2042e1e439a9bf8a8c0e24559b057)) + +* Add ruff config to pyproject.toml ([`328ef55`](https://github.com/OpenGeoscience/uvdat/commit/328ef556dd65e9d42f2d681ac48235a6ccd08892)) + +* Move heavy import to within function ([`e3c4443`](https://github.com/OpenGeoscience/uvdat/commit/e3c44438c39be0786827430f5dcc5446808ab0a1)) + +* Merge pull request #30 from OpenGeoscience/model-redesign + +Model redesign ([`72000c2`](https://github.com/OpenGeoscience/uvdat/commit/72000c27c4f6eaae96ba9c2c7d60244800e53782)) + +* Fix layers edge case bugs ([`361ec2f`](https://github.com/OpenGeoscience/uvdat/commit/361ec2f756cb42ef5bcbbe03c5793ba279cbddec)) + +* Update behavior around availableDerivedRegions ([`0a2c9ca`](https://github.com/OpenGeoscience/uvdat/commit/0a2c9ca1952dbb9e056a6b317e7b4d576bce03f5)) + +* Use `selectedDerivedRegions` storage instead of `isDerivedRegionSelected` function ([`dfe4c74`](https://github.com/OpenGeoscience/uvdat/commit/dfe4c7412974a057a4acfaac94a7a624ae80bffc)) + +* Merge remote-tracking branch 'origin/master' into model-redesign ([`6459e75`](https://github.com/OpenGeoscience/uvdat/commit/6459e753f0cbec9dba8773453cc3f0be77397aaa)) + +* Merge pull request #32 from OpenGeoscience/fix-active-layers ([`8a91613`](https://github.com/OpenGeoscience/uvdat/commit/8a916130c8c0044359b206ecd7e97737d40e3e1c)) + +* Add css rule to prevent checkbox label overflow ([`90be5c3`](https://github.com/OpenGeoscience/uvdat/commit/90be5c3dc53b3126fd6ec4fb04bd3ccb13b07d04)) + +* Fix raster slider and colormap behavior ([`dddefa1`](https://github.com/OpenGeoscience/uvdat/commit/dddefa17d68a5127f64b4ae30dd9af6e887fb3f8)) + +* Fix bug surrounding layer removal in options panel ([`02a2b90`](https://github.com/OpenGeoscience/uvdat/commit/02a2b900941d6a7442734132f6a9216bcfdbdaa7)) + +* Use computed getter/setter for vue-draggable ([`2d3c247`](https://github.com/OpenGeoscience/uvdat/commit/2d3c2475c3f0770aa02f6a26712e9661f63181ee)) + +* Merge pull request #33 from OpenGeoscience/ci-testing + +Enable CI testing ([`a2026de`](https://github.com/OpenGeoscience/uvdat/commit/a2026dea0d82045f9cf2d96549c54c6c6a037d6a)) + +* Merge pull request #34 from OpenGeoscience/web-updates + +Web updates ([`56eab4a`](https://github.com/OpenGeoscience/uvdat/commit/56eab4a93fa0e906fa5ac3b6bb74a909fa3eab71)) + +* Fix bug in getOrCreateLayerFromID ([`93ae876`](https://github.com/OpenGeoscience/uvdat/commit/93ae876435aa9f0a056b51275dffaff8b464880c)) + +* Merge pull request #35 from OpenGeoscience/web-updates-updates ([`52d8d4d`](https://github.com/OpenGeoscience/uvdat/commit/52d8d4dd5bfdce3babde454a00c69589924a2f1b)) + +* Add TODO ([`334b445`](https://github.com/OpenGeoscience/uvdat/commit/334b445d1201e1e3b4134d876ce457e50a7e781c)) + +* Fix reference to "dataset" object (instead of "Dataset" class) ([`1175a1b`](https://github.com/OpenGeoscience/uvdat/commit/1175a1b277492777e622e3381701ef0ce39c65c0)) + +* Use already-fetched map layers, consistent use of caching and types ([`3d4287f`](https://github.com/OpenGeoscience/uvdat/commit/3d4287f13ca924ae71c5339eee87ae87abe37d4d)) + +* Exclude "Extended" serializers from serializer matches in `get_available_simulations` ([`55fbff5`](https://github.com/OpenGeoscience/uvdat/commit/55fbff51af4286b5bd0fef34e075a0a4d1bb797c)) + +* Add TODO ([`4b62b03`](https://github.com/OpenGeoscience/uvdat/commit/4b62b0378487949fefcffbf1d15ca6473f93b1ea)) + +* Squash migrations into initial ([`4ab6137`](https://github.com/OpenGeoscience/uvdat/commit/4ab6137ead10e3189fc6ba5e09ff044c9c30012c)) + +* Fix linting ([`4e19483`](https://github.com/OpenGeoscience/uvdat/commit/4e19483ec37dfa8e39ce583275bfe3e65e013fb7)) + +* Retrieve map layers from dataset detail endpoint ([`f987749`](https://github.com/OpenGeoscience/uvdat/commit/f987749dae08302a70df3c4611d32e185498d5bf)) + +* Don't create local paths for service volumes ([`c96ff90`](https://github.com/OpenGeoscience/uvdat/commit/c96ff90eca962230d0bf0ad3be4de20abd0ebf7d)) + +* Fix type errors for AbstractLayer ([`0efeab8`](https://github.com/OpenGeoscience/uvdat/commit/0efeab880d5f5cca401e0b622bc45dbfab0989e2)) + +* Use tile extents instead of tile coords ([`a3df988`](https://github.com/OpenGeoscience/uvdat/commit/a3df9883616fb165108a73ec99eca8d59745691c)) + +* Add dataset classification ([`cef6f5e`](https://github.com/OpenGeoscience/uvdat/commit/cef6f5e941541559b1a45bce700d9afccbfb0397)) + +* Remove geojson_data JSONField, reorg geojson funcs ([`a088c52`](https://github.com/OpenGeoscience/uvdat/commit/a088c528becd18d34a8768773ced79f6601ea9ad)) + +* Add indexes and constraints to VectorTile ([`6acaaf6`](https://github.com/OpenGeoscience/uvdat/commit/6acaaf691709afbcccf185d2c56520886e122849)) + +* Fix applying zIndex when switching layers on the same Dataset ([`790e6df`](https://github.com/OpenGeoscience/uvdat/commit/790e6dfcf5d00a8098eb95523f4cdd67d0c39380)) + +* Add label to Context dropdown ([`34b79f3`](https://github.com/OpenGeoscience/uvdat/commit/34b79f39c3115db87bcf813250bcbf4f89ea8852)) + +* Allow user to apply style changes to all layers in Dataset ([`fb93dfd`](https://github.com/OpenGeoscience/uvdat/commit/fb93dfd30eb9c067ad17e2cb29a0c6ed5d9e307f)) + +* Switch order of populate script function calls (Datasets come first) ([`9d3f8c7`](https://github.com/OpenGeoscience/uvdat/commit/9d3f8c71cbba45da4d77ea5564c1701efcb6fdd1)) + +* Lint fixes ([`c20c94e`](https://github.com/OpenGeoscience/uvdat/commit/c20c94e5d1dc4b876030e2b57d8a7159b56c028f)) + +* Enable Derived Regions features ([`5431478`](https://github.com/OpenGeoscience/uvdat/commit/543147879ed36bc68e46169ec90b8d2d5b649974)) + +* Improve vector map layer styling to highlight GCC ([`eb1fe01`](https://github.com/OpenGeoscience/uvdat/commit/eb1fe01b1868c13ebd9f9e0bd2120a49c3909b3f)) + +* Enable Simulations features ([`f7bb553`](https://github.com/OpenGeoscience/uvdat/commit/f7bb553c2facca56a53dfdca3da4f3e93fadfdca)) + +* Esure context switching clears state and fetches new objects ([`632236a`](https://github.com/OpenGeoscience/uvdat/commit/632236a263c830c5156643aa60eec226110f2c93)) + +* More fixes for layer behavior ([`e6bd902`](https://github.com/OpenGeoscience/uvdat/commit/e6bd9022a5775d2a4ab1ac93a3d85ce2965f0482)) + +* Create slider for current map layer (shown for datasets where more than one map layer exists) ([`04966ab`](https://github.com/OpenGeoscience/uvdat/commit/04966ab7f4087853a1fb3d3f8dc2f296507debfd)) + +* Fix population of GCC chart ([`03ae6c3`](https://github.com/OpenGeoscience/uvdat/commit/03ae6c3bbcc80421eb7d1bae99c556f2385bd054)) + +* Fix web client build warnings related to versions ([`085d830`](https://github.com/OpenGeoscience/uvdat/commit/085d8305449c1bad89bf67547c3ab28298c6919b)) + +* Lint fixes ([`4b9a3b3`](https://github.com/OpenGeoscience/uvdat/commit/4b9a3b34c0c46f1b4cc73c8202a5a56716eb25de)) + +* Enable GCC features ([`8c13bd1`](https://github.com/OpenGeoscience/uvdat/commit/8c13bd12f854d6ecc079c6faf73b36ccbbcd0d66)) + +* More API changes ([`a574476`](https://github.com/OpenGeoscience/uvdat/commit/a574476db2dd9db377f7bc67a9d134953f6da549)) + +* Update conversion tasks for networks and regions ([`159b5b7`](https://github.com/OpenGeoscience/uvdat/commit/159b5b7d73f19b22658726b5df4c3952ff4dbd8d)) + +* Fix CI syntax ([`43f85be`](https://github.com/OpenGeoscience/uvdat/commit/43f85bed6e09af030b55717b309fc8e4d1d1c0ea)) + +* Merge changes from #32 ([`6128827`](https://github.com/OpenGeoscience/uvdat/commit/6128827f3127d23bf8351f2805857be807c85a2a)) + +* Other store typing changes ([`1ef509e`](https://github.com/OpenGeoscience/uvdat/commit/1ef509ea805b135ae22aa78e70ce6f9d3dba486a)) + +* Disable failure on warnings for lint-client ([`432828b`](https://github.com/OpenGeoscience/uvdat/commit/432828b7f9e0b750ac3bb652789d17dded11e8c8)) + +* Add a test for client lint/type ([`9f80c14`](https://github.com/OpenGeoscience/uvdat/commit/9f80c147a84cd2bf3a79a3f237e60886329d4ec6)) + +* Fix some typing ([`ad49ab1`](https://github.com/OpenGeoscience/uvdat/commit/ad49ab1cccae81bb7322c60adff4f30ecd3c4220)) + +* Fix some rest endpoints ([`9f17c5f`](https://github.com/OpenGeoscience/uvdat/commit/9f17c5fc24381f963560d85d92d1506ae1062625)) + +* Resolve import errors with consistent Vue setup structure ([`c0b6a8d`](https://github.com/OpenGeoscience/uvdat/commit/c0b6a8dd6a346f8cdda92efccabea81e7279ce64)) + +* City -> Context ([`7fb50ea`](https://github.com/OpenGeoscience/uvdat/commit/7fb50eaebdbcd3879ae8afdcc72fa6d2e3b5dc34)) + +* Ensure large-image-converter is installed prior to pytest ([`1305b01`](https://github.com/OpenGeoscience/uvdat/commit/1305b018fc67a18abc62793027e4a2a0e0b9cb5a)) + +* Add populate test ([`f6789e2`](https://github.com/OpenGeoscience/uvdat/commit/f6789e24367abaa955a1994ed42bb495834b2cb6)) + +* Use repository link to install django-configurations, latest version +needed but not posted to PyPI yet ([`4c3917e`](https://github.com/OpenGeoscience/uvdat/commit/4c3917e8111e8f5f20661b23ceaea9247b836e95)) + +* Fix import of DerivedRegionCreationError (changed name for lint) ([`48dfb09`](https://github.com/OpenGeoscience/uvdat/commit/48dfb0909bba37ac77950141568e9716ab5b8f5f)) + +* Fix multi-container environment with compose action ([`a214b4f`](https://github.com/OpenGeoscience/uvdat/commit/a214b4fc2d4a0dbc797fbd8a6ef72938dd1d4a1b)) + +* Use native environment file for testing ([`ba68040`](https://github.com/OpenGeoscience/uvdat/commit/ba68040047f944cc91d1b064bac4fed73685cc17)) + +* More lint fixes ([`ea94851`](https://github.com/OpenGeoscience/uvdat/commit/ea94851cec7d70931607a7ad19f25bd7782001aa)) + +* Move env to run step for pytest & check-migrations ([`9efb8e3`](https://github.com/OpenGeoscience/uvdat/commit/9efb8e30df248106fc2a2c08928e3a508fcd77ea)) + +* Fix linting ([`537153b`](https://github.com/OpenGeoscience/uvdat/commit/537153bfd308c4ace502ae89162f47aa158f660e)) + +* Call tox environments as separate CI steps ([`d0faf2f`](https://github.com/OpenGeoscience/uvdat/commit/d0faf2fbdd2265ff2bc93a7a1d07fe9834bf7407)) + +* Include population script successful output as txt file ([`384194e`](https://github.com/OpenGeoscience/uvdat/commit/384194e49dcdb990247bbeda37ef44f0d34c7ea0)) + +* Add more print statements for object creations ([`7597f1b`](https://github.com/OpenGeoscience/uvdat/commit/7597f1bd9eed7888cfe5c38fcf10c38b81ad1f25)) + +* Use S3FileField for large geojson data ([`08779f3`](https://github.com/OpenGeoscience/uvdat/commit/08779f308887d05165e8b12e36a80c23dc22b0d5)) + +* Rename "Original" to "Source" ([`edb1ada`](https://github.com/OpenGeoscience/uvdat/commit/edb1adae6f8998ddd0546f252c03ab290cd73778)) + +* Change Cities into Contexts ([`cfd6a07`](https://github.com/OpenGeoscience/uvdat/commit/cfd6a07675a13b7e5dc500c181dd0316dd711b86)) + +* Rename DataSources to MapLayers ([`87d8195`](https://github.com/OpenGeoscience/uvdat/commit/87d819566a53d246550b4b9bd012a9c1abca0f47)) + +* Update populate script and conversion tasks ([`bdcece6`](https://github.com/OpenGeoscience/uvdat/commit/bdcece69c8d3728bc8d6347252f3e0f437c027bf)) + +* Fix Chart-FileItem relationship ([`cd31d9e`](https://github.com/OpenGeoscience/uvdat/commit/cd31d9ed44a7931831970de895aaf4642f0a9215)) + +* Separate Charts from DataSources ([`1afb1f4`](https://github.com/OpenGeoscience/uvdat/commit/1afb1f4cddc9461594977d6ea956e9d262658852)) + +* Small changes to some fields ([`3e6b67f`](https://github.com/OpenGeoscience/uvdat/commit/3e6b67f84f49ae6c126218a9d3b3d907a9a81c98)) + +* Another design iteration ([`aaa1c7f`](https://github.com/OpenGeoscience/uvdat/commit/aaa1c7fa7fab9518d6daba57da7c1932245a6117)) + +* Various design changes ([`d28edfa`](https://github.com/OpenGeoscience/uvdat/commit/d28edfab1f62f0ba98a036b9f75473ec7fb31295)) + +* Update model references in tasks ([`acda2c3`](https://github.com/OpenGeoscience/uvdat/commit/acda2c3204e7be6a4110f4d670e17b41e1845eec)) + +* Update rest viewsets for new models ([`d894e77`](https://github.com/OpenGeoscience/uvdat/commit/d894e77c1695c3cfaf7f09b9faef13efebc008d3)) + +* Format new models files ([`3c74ab7`](https://github.com/OpenGeoscience/uvdat/commit/3c74ab7445fcd1e1ff91b078755dfb962f0edd92)) + +* Udate admin.py for new models ([`a22b715`](https://github.com/OpenGeoscience/uvdat/commit/a22b715dbf12b5b3c20acde82ebefc7d77cebdca)) + +* Start new migration history ([`27ecae0`](https://github.com/OpenGeoscience/uvdat/commit/27ecae09e26791c30776bf47758c0db4352dacc5)) + +* Use relative locations for docker volume mounts and fix tox ([`1cde6c9`](https://github.com/OpenGeoscience/uvdat/commit/1cde6c9e77fb9e8e4a9c9b8e2b8a72831fbf070e)) + +* Reorganize model definitions (first pass) ([`f6ee54c`](https://github.com/OpenGeoscience/uvdat/commit/f6ee54cd7e72bae1eeb3e3f02569360ce962d986)) + +* Merge pull request #29 from OpenGeoscience/pin-django-allauth ([`c4a93fd`](https://github.com/OpenGeoscience/uvdat/commit/c4a93fd212250b1728a1cf607a3de8a3faf7d7b2)) + +* Pin django-allauth to <0.56.0 ([`026bb14`](https://github.com/OpenGeoscience/uvdat/commit/026bb141b5e333fdcb6c5c2d1c5c46df1b407a10)) + +* Merge pull request #19 from OpenGeoscience/region-operations ([`948f6ad`](https://github.com/OpenGeoscience/uvdat/commit/948f6ad6f7ebc3a2f136bb4c04d00884d9ae5dc1)) + +* Move save_regions function to new tasks/regions.py ([`41c944c`](https://github.com/OpenGeoscience/uvdat/commit/41c944c93119389f4ea2dcccfd05a726ba6ef1bc)) + +* Add same spacing to Region Grouping popup ([`37ddb33`](https://github.com/OpenGeoscience/uvdat/commit/37ddb3374668b75084553deb9d4278bf992271c7)) + +* Use attach prop on v-menu so it moves with activator (when main drawer opens/closes) ([`9f3a75c`](https://github.com/OpenGeoscience/uvdat/commit/9f3a75ca4b40ea9e8d8273ed0a8b3e4d86b401c2)) + +* Add icon tooltips, no layers text, and adjusted spacing for ActiveLayers component ([`f138a77`](https://github.com/OpenGeoscience/uvdat/commit/f138a77a779df189bdecef8757b78e68d94b8405)) + +* Use different components for layers and region overlays ([`052e16e`](https://github.com/OpenGeoscience/uvdat/commit/052e16e8d14124a3b2c1a5e576b481559b3c0b67)) + +* Show Active Layers as map overlay ([`b53f427`](https://github.com/OpenGeoscience/uvdat/commit/b53f427290b22727705e2b56845bd87edd5ae3a9)) + +* Factor out map tooltip and context overlay components ([`20d74f6`](https://github.com/OpenGeoscience/uvdat/commit/20d74f68eb25c508129b0b9145d9d609a388088d)) + +* Rename selectedDataSources to activeDataSources ([`22e49af`](https://github.com/OpenGeoscience/uvdat/commit/22e49afe464b28cb0a39167b26a5da7984b7011b)) + +* Move map component into sub folder ([`60c0ee1`](https://github.com/OpenGeoscience/uvdat/commit/60c0ee1582c4b2a426c8dfdc4bbf39aa665327c3)) + +* Move derived region creation logic into new function ([`f73ee88`](https://github.com/OpenGeoscience/uvdat/commit/f73ee88ecf8d32fe7d6b95c86ee6a729ddce9615)) + +* Move RegionFeatureCollectionSerializer to serializers file ([`e7f2c52`](https://github.com/OpenGeoscience/uvdat/commit/e7f2c521340a04efa56dc7840e337a80ad1cf713)) + +* Use id instead of pk for regions ([`8122b0c`](https://github.com/OpenGeoscience/uvdat/commit/8122b0c4f38464ab6a40c252c27e11b968b3c138)) + +* Fix opacity state persistence ([`a574b1e`](https://github.com/OpenGeoscience/uvdat/commit/a574b1e117e95988878e38581d29d2af67311866)) + +* Fix dataset sidebar selection logic ([`1460913`](https://github.com/OpenGeoscience/uvdat/commit/146091311b050491f7227e3bfb6e266b627b3209)) + +* Only render dataset with VectorTileLayer if vector_tiles_file is present ([`b05fa74`](https://github.com/OpenGeoscience/uvdat/commit/b05fa741bf507389e82202d118c6819f1ba77457)) + +* Open datasets panel by default ([`6352c3a`](https://github.com/OpenGeoscience/uvdat/commit/6352c3a358d79f19b8ae3a4b4372f718fe3dfc31)) + +* Add text to derived region tooltip ([`6e3cd44`](https://github.com/OpenGeoscience/uvdat/commit/6e3cd4461be78f95252690b835f4554e07242868)) + +* Re-organize layer creation logic ([`0de281e`](https://github.com/OpenGeoscience/uvdat/commit/0de281e8e62be2f8712a40d12f6681ff01c4618a)) + +* Fix network node visualization ([`ae13be6`](https://github.com/OpenGeoscience/uvdat/commit/ae13be643b115cfcd6ecf8bb17d9fca9085c6c5f)) + +* Randomly color derived regions ([`3760928`](https://github.com/OpenGeoscience/uvdat/commit/37609289985ef5d539f6257ec333d0b7e8b1305f)) + +* Return feature instead of geometry from derived region endpoint ([`33720ed`](https://github.com/OpenGeoscience/uvdat/commit/33720edbf6815030aebe4d7926669407631e99b1)) + +* Fix bug in derived region creation view ([`f1e5118`](https://github.com/OpenGeoscience/uvdat/commit/f1e5118214001ad00fe248bddeb52f9d094b934e)) + +* Use class getters on MapDataSource ([`37d2b4a`](https://github.com/OpenGeoscience/uvdat/commit/37d2b4a99ec64453e8c6df31d3cac4f383a907f8)) + +* Add type info to map ([`f587ad4`](https://github.com/OpenGeoscience/uvdat/commit/f587ad43599494378e0dde61114c4d6dd89051d6)) + +* Remove use of selectedDataSourceIds ([`bb4f2b1`](https://github.com/OpenGeoscience/uvdat/commit/bb4f2b1cdc82e88aa6afef21346cb084d10dc079)) + +* Remove use of selectedDatasetIds ([`929a822`](https://github.com/OpenGeoscience/uvdat/commit/929a822e3a93ac15654f6ae85b675c95419a3831)) + +* Move functions into layers.ts and data.ts ([`3c6cff3`](https://github.com/OpenGeoscience/uvdat/commit/3c6cff3a2deac58ff2606347c4a108b44b7d68e4)) + +* Integrate MapDataSources ([`28ba070`](https://github.com/OpenGeoscience/uvdat/commit/28ba070eea998b0aac566790bad916b6ac26e5d4)) + +* Replace currentDataset with currentMapDataSource ([`3b4980f`](https://github.com/OpenGeoscience/uvdat/commit/3b4980f676db0aaeee545a1c0f4c08c824c4690c)) + +* Fix derived region panel reactivity ([`fab0b51`](https://github.com/OpenGeoscience/uvdat/commit/fab0b51158030ed7e22e8f54f327ac0061cf6ed9)) + +* Use sets for selected regions and datasets ([`f7410a8`](https://github.com/OpenGeoscience/uvdat/commit/f7410a82a47e68d33370306e9afeecab480cb635)) + +* Ensure active layers panel opens properly ([`2711122`](https://github.com/OpenGeoscience/uvdat/commit/271112277ba2021b943f500b1c2898a879581d89)) + +* Add viewing of derived regions ([`dbaa3db`](https://github.com/OpenGeoscience/uvdat/commit/dbaa3db702346bca3fb82f8a5cf26da2dfbdeda9)) + +* Add derived_region method for openlayers ([`b882009`](https://github.com/OpenGeoscience/uvdat/commit/b882009dae565933d4cedda09f2b72e7e4d8536f)) + +* Add UI methods for creating and listing derived regions ([`63be3c4`](https://github.com/OpenGeoscience/uvdat/commit/63be3c4716e0f124154eae5119b7d2306d82bb53)) + +* Add API endpoint for creating derived regions ([`c5daf81`](https://github.com/OpenGeoscience/uvdat/commit/c5daf81ea98f5ee513c058c3df6455f762c51d0b)) + +* Ensure features are correctly handled when selecting datasets ([`0782e1c`](https://github.com/OpenGeoscience/uvdat/commit/0782e1c1e343caa1b8f08a6a7f5537d8c9d0d276)) + +* Serialize region pk as number in feature collection ([`70856eb`](https://github.com/OpenGeoscience/uvdat/commit/70856ebcef8b8fc86072e09a059343a6f4ef505a)) + +* Move network tooltip rendering into OpenLayersMap component ([`65698c0`](https://github.com/OpenGeoscience/uvdat/commit/65698c00a5ebcb5493bb51000eb4dd2355f08e11)) + +* Render map tooltip using vue + +Render the map tooltip through vue templating, instead of dynamic dom element generation. ([`934320d`](https://github.com/OpenGeoscience/uvdat/commit/934320d885086f896d6a3e6428449185ea815b7c)) + +* Add boston zip codes dataset ([`c29a558`](https://github.com/OpenGeoscience/uvdat/commit/c29a55826e5fd8c7ddb654b8c26e0efa587660f5)) + +* Add boston census 2020 block groups dataset ([`153c5e3`](https://github.com/OpenGeoscience/uvdat/commit/153c5e312ee2368c4b76c023cb130a5996278213)) + +* Generalize save_regions func ([`c178426`](https://github.com/OpenGeoscience/uvdat/commit/c17842672eb637811093d498d141d35c9e11f98c)) + +* Add DerivedRegions, region constraints ([`cb67764`](https://github.com/OpenGeoscience/uvdat/commit/cb67764a0af4c51e872a81037fa3e98560ef2a55)) + +* Merge pull request #23 from OpenGeoscience/recovery-sim + +Recovery simulations ([`7f798ac`](https://github.com/OpenGeoscience/uvdat/commit/7f798ac40f2f1c301a2b01c92f67b3375820927c)) + +* Remove redundant cast to int + +Suggested by @AlmightyYakob + +Co-authored-by: Jacob Nesbitt <jjnesbitt2@gmail.com> ([`08bbc1c`](https://github.com/OpenGeoscience/uvdat/commit/08bbc1c29982d0fc8e95969fd1d8b2c2e0f4aead)) + +* Optimize construct_edge_list ([`476273f`](https://github.com/OpenGeoscience/uvdat/commit/476273f23864859f4140e599eda42bf9366a0008)) + +* Implement other recovery modes with Jack's centrality measures function ([`c48ad15`](https://github.com/OpenGeoscience/uvdat/commit/c48ad159cc3eae913acf75b10a110b724e4c2892)) + +* Update Node Animation component ([`fea8537`](https://github.com/OpenGeoscience/uvdat/commit/fea8537bfdc760a4282f73974804c39c895b55c0)) + +* Abstract Simulation Result display for compatibility with new Simulation type ([`9903f87`](https://github.com/OpenGeoscience/uvdat/commit/9903f876bc4ec5d8a53e6595d7d30824746c2533)) + +* Add a Simulation type for recovery scenarios, implement random only ([`7c5e14c`](https://github.com/OpenGeoscience/uvdat/commit/7c5e14c84e1ba353dc1996c33bd00291abbf6781)) + +* Merge pull request #20 from OpenGeoscience/simulations-pane + +Simulations pane ([`d7ecc06`](https://github.com/OpenGeoscience/uvdat/commit/d7ecc0671b34861a35e88140c2d0abfbd5cd6873)) + +* Use UniqueConstraint instead of unique_together ([`c992c06`](https://github.com/OpenGeoscience/uvdat/commit/c992c067515f0fc9ca009ff08aca34a2cf360f90)) + +* Require network mode enabled for network failure animation ([`c1c5661`](https://github.com/OpenGeoscience/uvdat/commit/c1c5661ef927ed498067a207b8ad866cd4a17f0b)) + +* Add City reference on Simulation Results ([`1cd52b8`](https://github.com/OpenGeoscience/uvdat/commit/1cd52b8cdcc5bfd926b3bc6ea54dd73645f3053f)) + +* Don't overwrite other rest framework defaults ([`6cf524a`](https://github.com/OpenGeoscience/uvdat/commit/6cf524a74e89cdff0b2533a3c72680507bad2120)) + +* Constrain simulation_id and input_args as unique together ([`3f60dd8`](https://github.com/OpenGeoscience/uvdat/commit/3f60dd857b841d2e80a3bb37dcf2f42f4d68ee16)) + +* Add error message to SimulationResult, add input checking ([`9fb1640`](https://github.com/OpenGeoscience/uvdat/commit/9fb16402df97c2f1cd69d6eb0d41485d12bd4165)) + +* Remove redundant model inheritance ([`d58061d`](https://github.com/OpenGeoscience/uvdat/commit/d58061d61eb2d7b933b586658ab20681f3c78828)) + +* Don't redraw network layer until new gcc is received (avoid flickering) ([`9814351`](https://github.com/OpenGeoscience/uvdat/commit/9814351755bce02b14e7376c855b86e36197cc86)) + +* Add Node Failure Animation component ([`9e27e03`](https://github.com/OpenGeoscience/uvdat/commit/9e27e0322fa1fba5445be78f1d0edaa1d375562d)) + +* Fill simulation function ([`9202e6f`](https://github.com/OpenGeoscience/uvdat/commit/9202e6f061d61fcd1fa27dd5f3e5703294990aff)) + +* Improve appearance of items in Active Layers ([`d5652cc`](https://github.com/OpenGeoscience/uvdat/commit/d5652cc9db1861c300137f0878aca374c0b8eb41)) + +* Show existing SimulationResult objects and their input args ([`dad8382`](https://github.com/OpenGeoscience/uvdat/commit/dad8382de708a58bdd5e5c6a17fcfc10ae2cb65c)) + +* Get SimulationResult objects related to a simulation type ([`07c3d15`](https://github.com/OpenGeoscience/uvdat/commit/07c3d1565fb5188d316e0c77d5c19b25f54e3e16)) + +* Upgrade dependencies to eliminate errors from vuetify ([`deb898b`](https://github.com/OpenGeoscience/uvdat/commit/deb898b0baeb222dacd1f61b1ca877238732f01e)) + +* Add SimulationResult model ([`7acf2c4`](https://github.com/OpenGeoscience/uvdat/commit/7acf2c4d62553ab0b4455fb347f4362f44af100e)) + +* Add client POST requests functions ([`e5e0717`](https://github.com/OpenGeoscience/uvdat/commit/e5e071759232ea485325b4d3d10c583116c2b05e)) + +* Add Simulations panel to select inputs for run ([`6d089f5`](https://github.com/OpenGeoscience/uvdat/commit/6d089f5c94620d5bbe3da24431c3a905ce979584)) + +* Add POST endpoint to run simulation ([`615e524`](https://github.com/OpenGeoscience/uvdat/commit/615e52414b3d22fcf0b0ab52f10e23eced94feef)) + +* Allow POST requests without authentication (Phase 1 solution only) ([`65bbde1`](https://github.com/OpenGeoscience/uvdat/commit/65bbde141a5331389d09a5aa0d47615343071704)) + +* Fix simulation arg options in request response ([`b8c761e`](https://github.com/OpenGeoscience/uvdat/commit/b8c761ea27a94a28fdda732ea3385aa26c32170e)) + +* Clear error message on a successful request ([`f21d33f`](https://github.com/OpenGeoscience/uvdat/commit/f21d33f3918c420ef2d0b63bd7b7be768743f994)) + +* Remove console log ([`45470b8`](https://github.com/OpenGeoscience/uvdat/commit/45470b8a510e6d80d2035c0ab1d8500b75978104)) + +* Add refresh button to Available Datasets panel and reorder panels (follow panel pattern) ([`b85f928`](https://github.com/OpenGeoscience/uvdat/commit/b85f92811e264bce78f1dd21743940a4c81afa22)) + +* Add available simulations list to UI ([`e7e0a2d`](https://github.com/OpenGeoscience/uvdat/commit/e7e0a2d9541ec72a3c80e0585425203aa75cdcc1)) + +* Add backend simulations viewset and tasks ([`a4da097`](https://github.com/OpenGeoscience/uvdat/commit/a4da09784800667cd3445ad0d1a2736a6d75104e)) + +* Merge pull request #17 from OpenGeoscience/flood-areas + +Add flood datasets ([`f092580`](https://github.com/OpenGeoscience/uvdat/commit/f09258039a098316d28d3182e8444343d029c40d)) + +* Fix conversion of large flood map by increasing size limit ([`6de5b7d`](https://github.com/OpenGeoscience/uvdat/commit/6de5b7d4c19808a664cf8a659e2677f7a651e4d4)) + +* Fix wrong field name ([`19bff8f`](https://github.com/OpenGeoscience/uvdat/commit/19bff8f6b82b18fc001cfd336cf368dff3ed0b7b)) + +* Only use vector tiles on large datasets, use normal vector data otherwise ([`04b1c7f`](https://github.com/OpenGeoscience/uvdat/commit/04b1c7f6c679825935552981dcf1b429c2c399bb)) + +* Add flood datasets ([`ac72025`](https://github.com/OpenGeoscience/uvdat/commit/ac72025e84ca7aba589282cc99d5c4be3c996f38)) + +* Merge pull request #15 from OpenGeoscience/layers + +Layer Visibility Logic ([`812f3dd`](https://github.com/OpenGeoscience/uvdat/commit/812f3dd5f31ef0819dc06d3a08fe896c43b5b88f)) + +* Fix layer update logic ([`1314eb5`](https://github.com/OpenGeoscience/uvdat/commit/1314eb5bb4c63d3d7c5c39fc3ff7a847e915ddd8)) + +* Fix undefined network.value case in Options Drawer ([`c529d2a`](https://github.com/OpenGeoscience/uvdat/commit/c529d2ad346c088e3567f534987acec5b5341db5)) + +* Fix bug noted by @johnkit ([`fbaeb23`](https://github.com/OpenGeoscience/uvdat/commit/fbaeb23a3641967a8de5d6dc62e9a0dea6842b55)) + +* Fix get z index; prevent layer reordering ([`547efe2`](https://github.com/OpenGeoscience/uvdat/commit/547efe2d7536fe3bcb38469a89d74287058ef435)) + +* Remove console log ([`98fa3ca`](https://github.com/OpenGeoscience/uvdat/commit/98fa3ca84794cbd7e33a2815756367c4ebd9fe96)) + +* Clear raster tooltip on change current Dataset ([`8422f96`](https://github.com/OpenGeoscience/uvdat/commit/8422f9667408c2e14cdf236cdbaf8b419fb386e3)) + +* Fix bug noted by @AlmightyYakob ([`5977575`](https://github.com/OpenGeoscience/uvdat/commit/597757570f9ddcccc5c068fe16b54f3bf3930d1f)) + +* Fix layer visibility logic ([`5c9f289`](https://github.com/OpenGeoscience/uvdat/commit/5c9f289a184f055a187593b6839085f12623c288)) + +* Add an icon button to show/hide map base layer ([`28a4c13`](https://github.com/OpenGeoscience/uvdat/commit/28a4c13c3eede3e66f4ae0aab6c1ce2cb0da3ddc)) + +* Consolidate layer visibility logic to one utils function ([`33878c1`](https://github.com/OpenGeoscience/uvdat/commit/33878c10650cbde7f22eeb9b9017f4a1171eda35)) + +* Merge pull request #13 from OpenGeoscience/charts + +Charts ([`9548d73`](https://github.com/OpenGeoscience/uvdat/commit/9548d736f0b8b1a9bd923c1d0fcfc46a9f594390)) + +* Fix refresh charts button propagation ([`5d43f9a`](https://github.com/OpenGeoscience/uvdat/commit/5d43f9adba4055b3bfcfacd7a16550180ae36254)) + +* Move refresh charts icon button ([`362b759`](https://github.com/OpenGeoscience/uvdat/commit/362b7599b6cb4d229b1dd677c00ba3dcbb6d41ec)) + +* Change parent classes of ChartViewSet ([`62e167b`](https://github.com/OpenGeoscience/uvdat/commit/62e167b86a343b3a6f1ea87efdd2c60811c02213)) + +* Allow user to clear data from charts where clearable=True ([`9993789`](https://github.com/OpenGeoscience/uvdat/commit/9993789a730106c22e6c1454287c2e95346a9b0a)) + +* Create charts viewset and clear endpoint ([`432e22f`](https://github.com/OpenGeoscience/uvdat/commit/432e22f0f1c6595fbee286158a24a50d3acac312)) + +* Add field clearable to Chart model ([`b0884d7`](https://github.com/OpenGeoscience/uvdat/commit/b0884d73d97197666059842d5cefc3b074a674e6)) + +* Add download button for chart data ([`f72ea6d`](https://github.com/OpenGeoscience/uvdat/commit/f72ea6d5fb9d9f6cd8141288e718d6f15d601e42)) + +* GCC chart - use fixed y range and don't use temporal resets ([`b78f124`](https://github.com/OpenGeoscience/uvdat/commit/b78f12447f653bdf35925e6290d28f3e99798a71)) + +* Minor client fixes ([`d9e9df8`](https://github.com/OpenGeoscience/uvdat/commit/d9e9df824bc91a8f867833086c5c1a9f66e526c1)) + +* Change GCC chart algorithm ([`d43473c`](https://github.com/OpenGeoscience/uvdat/commit/d43473c04a1d7a5a125c50c782dad8baf286a124)) + +* Fix formatting ([`583f111`](https://github.com/OpenGeoscience/uvdat/commit/583f111061f042c55144e1a96cbddfec5a807012)) + +* Add chart options to Chart model ([`c05c6d4`](https://github.com/OpenGeoscience/uvdat/commit/c05c6d4fba5c6a26fe7ce34f94a4fab7d566cc72)) + +* Show chart title and axis labels ([`a7e05ab`](https://github.com/OpenGeoscience/uvdat/commit/a7e05ab831ec2e196cc2d577189116cf495fb307)) + +* Update charts after GCC change ([`5e56758`](https://github.com/OpenGeoscience/uvdat/commit/5e56758e0753c3d62bcbaf6b85c66a72a48db34a)) + +* Move chart display over map instead of in a tab ([`a6a0df5`](https://github.com/OpenGeoscience/uvdat/commit/a6a0df5037d47ee87710dceb9d61d3ff34b13e1b)) + +* Fix layer bug making map disappear ([`503317e`](https://github.com/OpenGeoscience/uvdat/commit/503317e436ab6ad5f4fea07abdc8856a9ef73a0a)) + +* Merge branch 'regions' into charts ([`afab630`](https://github.com/OpenGeoscience/uvdat/commit/afab6307836190d42a60a3faf5ed61cd95da1d09)) + +* Make metadata display table recursive for nested objects ([`e204702`](https://github.com/OpenGeoscience/uvdat/commit/e204702af394eba922da0635dd59ab682146e245)) + +* Add gcc charts ([`5e32289`](https://github.com/OpenGeoscience/uvdat/commit/5e32289e61e06e447c8272f407c986483bdd93ed)) + +* Add metadata expansion panel ([`b216146`](https://github.com/OpenGeoscience/uvdat/commit/b216146eed326752de83e993d0c8b0722ccf3edf)) + +* Replace x range slider with number inputs ([`bdde335`](https://github.com/OpenGeoscience/uvdat/commit/bdde3357c411982d5cfe0772d3df85814f9760c3)) + +* Separate Charts from Datasets ([`7e9064b`](https://github.com/OpenGeoscience/uvdat/commit/7e9064b4de1c394a2c530523aa0179d92bfe63f6)) + +* Allow user to crop chart to x range ([`dbbc819`](https://github.com/OpenGeoscience/uvdat/commit/dbbc819314cb1df3ba682dcfacf1a3b3fddf25e9)) + +* Add a chart view mode to UI and use Vue-ChartJS to show selected chart data ([`aa7e147`](https://github.com/OpenGeoscience/uvdat/commit/aa7e14770affb8765b8b46c96704f906166716de)) + +* Add a chart model and save a chart from tide level dataset ([`3315967`](https://github.com/OpenGeoscience/uvdat/commit/33159670c7982bdeb36c7a7fa391a37956b11e0b)) + +* Merge pull request #12 from OpenGeoscience/regions ([`be9fc48`](https://github.com/OpenGeoscience/uvdat/commit/be9fc483d6768a8cfcfbd0fc11e49905bf61843f)) + +* Refactor displayFeatureTooltip to include regions ([`6c8584f`](https://github.com/OpenGeoscience/uvdat/commit/6c8584f910f7ec955d6d5175f7bb17af197a4496)) + +* Fetch regions directly instead of using vector tiles ([`9aebd8d`](https://github.com/OpenGeoscience/uvdat/commit/9aebd8d89b5b80ad4479aacfed4a445d7f05c729)) + +* Add "Zoom to Region" button to map tooltip ([`090243c`](https://github.com/OpenGeoscience/uvdat/commit/090243c25fdae36bc9c6eb107a74537cc91cea56)) + +* Reformat displayFeatureTooltip function ([`50aa728`](https://github.com/OpenGeoscience/uvdat/commit/50aa728349c2d59249e517b4b7440859ee981c6e)) + +* Save regions task ([`9975841`](https://github.com/OpenGeoscience/uvdat/commit/9975841b45970a7183b641c17e46d2fd27e95d00)) + +* Adjust style of blocks dataset ([`d814ae5`](https://github.com/OpenGeoscience/uvdat/commit/d814ae5afc399c363848822ceaa8765aa0f1f615)) + +* Add Region model ([`83ba67d`](https://github.com/OpenGeoscience/uvdat/commit/83ba67dbf57b32143e7bf06a3b96f16f08a96b39)) + +* Merge pull request #11 from OpenGeoscience/raster-tooltip + +UI updates ([`28b4a53`](https://github.com/OpenGeoscience/uvdat/commit/28b4a537c5a32a0df6da11f681ff44468f910f09)) + +* Remove print statements ([`609599b`](https://github.com/OpenGeoscience/uvdat/commit/609599b015e307ed0eb7f78c9ecaf4d57576001d)) + +* Complete raster values tooltip ([`762ac7e`](https://github.com/OpenGeoscience/uvdat/commit/762ac7eab9c7ecf7d06acd67be2a6250ddf4c1ba)) + +* Add endpoint to get raster data at any resolution ([`4d5b095`](https://github.com/OpenGeoscience/uvdat/commit/4d5b0958c2bbe6a49a4ab0c84b09af761a24166b)) + +* Options panel on the right ([`e24bcb8`](https://github.com/OpenGeoscience/uvdat/commit/e24bcb84aa3208dc713bbff8261ccb0219e11c2f)) + +* Group available layers by category ([`cdbe9d8`](https://github.com/OpenGeoscience/uvdat/commit/cdbe9d85f7d18121c843cab05e9ded6a0c0140b3)) + +* Merge pull request #10 from OpenGeoscience/deactivate-nodes + +Deactivate nodes ([`6b7f741`](https://github.com/OpenGeoscience/uvdat/commit/6b7f74184be2725b87cd1a71f650f682b5c9f84e)) + +* Show GCC when deactivated nodes list changes ([`2b2b4fd`](https://github.com/OpenGeoscience/uvdat/commit/2b2b4fdac959c26ac78878c4b8ec41fcbee90576)) + +* Fix feature display bugs ([`a51fe32`](https://github.com/OpenGeoscience/uvdat/commit/a51fe32faae715b156fd5d5899d97cd7c150bede)) + +* Allow user to deactivate nodes ([`3ace365`](https://github.com/OpenGeoscience/uvdat/commit/3ace365268d2dd19d29f10b97fe987218bd48a4d)) + +* Merge branch 'raster-tooltip' into deactivate-nodes ([`c1ea7cb`](https://github.com/OpenGeoscience/uvdat/commit/c1ea7cb7c1d7823b568af43c0181e108eae32bc4)) + +* Create a separate tooltip function called when raster tooltip is enabled ([`3b40787`](https://github.com/OpenGeoscience/uvdat/commit/3b40787d2828b83fbce4fa14a4741d7147660c1b)) + +* Fill in network_gcc method ([`df17fde`](https://github.com/OpenGeoscience/uvdat/commit/df17fde490149a3869021986678309d7f6a185af)) + +* Merge pull request #9 from OpenGeoscience/city-blocks + +City blocks dataset ([`191360a`](https://github.com/OpenGeoscience/uvdat/commit/191360a2d14b28d936a199fff9604d22bc7d99bc)) + +* Fix some styling bugs ([`36b2d68`](https://github.com/OpenGeoscience/uvdat/commit/36b2d6808aaf3ccb22cb1c4c4d7f3a183dd16e82)) + +* Add styling to color blocks ([`3179555`](https://github.com/OpenGeoscience/uvdat/commit/3179555149fc5c90d6d216cc6fcd8a0656ac6f99)) + +* Ingest geoJSON type for city Blocks dataset ([`2f5539b`](https://github.com/OpenGeoscience/uvdat/commit/2f5539bd7cea281951145b293c0897afdbf5cd18)) + +* Merge pull request #8 from OpenGeoscience/blank-analysis-task + +Blank analysis task ([`bd0aa69`](https://github.com/OpenGeoscience/uvdat/commit/bd0aa696f2c4a73513d76192fe3c9fc945c132a1)) + +* Remove redundant edges in edge_list dict form ([`831ae32`](https://github.com/OpenGeoscience/uvdat/commit/831ae3273ccbf71fd6bb803c9a344252cd10fe08)) + +* Use dict structure for edge_list sent to network_gcc task ([`f803e05`](https://github.com/OpenGeoscience/uvdat/commit/f803e05453ce5f5fc1afbc6b69a248d36c828092)) + +* Add an endpoint to request gcc task ([`7c2805c`](https://github.com/OpenGeoscience/uvdat/commit/7c2805c4933aceeebb0b13c96d71d78ea70c0b45)) + +* Separate tasks into two files ([`46d4140`](https://github.com/OpenGeoscience/uvdat/commit/46d4140176cf84dc784d42e0c6bb073b0275e5db)) + +* Merge pull request #7 from OpenGeoscience/tide-level-dataset + +Tide level dataset ([`e232745`](https://github.com/OpenGeoscience/uvdat/commit/e232745731f2401f3d636eb11171cc4dc73fc143)) + +* Fix cog reading and add print in tasks.py ([`6d09261`](https://github.com/OpenGeoscience/uvdat/commit/6d09261fa21416ee9e00377a907e6fa37cfc41e5)) + +* Add tide level dataset and use metadata field for network options ([`f96f0c8`](https://github.com/OpenGeoscience/uvdat/commit/f96f0c8efd3dd39b64e694bbe96a9f4e803d4410)) + +* Add metadata field to Dataset model ([`626d514`](https://github.com/OpenGeoscience/uvdat/commit/626d5148d3d022d4750b670fca2586becb947447)) + +* Merge pull request #6 from OpenGeoscience/network-vis + +Network vis ([`4564085`](https://github.com/OpenGeoscience/uvdat/commit/4564085e390f4938df4930ec6915ccf0711448f8)) + +* Add functions to show dataset as a network representation ([`712e0cc`](https://github.com/OpenGeoscience/uvdat/commit/712e0cc47a3b62a07b715e7f1952ae67573f1f4c)) + +* Add endpoint to fetch network nodes for a dataset ([`8550d44`](https://github.com/OpenGeoscience/uvdat/commit/8550d44a44cdc5301b1035f6efbba1b1c8a43dea)) + +* Merge pull request #5 from OpenGeoscience/more-colormaps + +Add more colormap options and use terrain as default ([`0f81001`](https://github.com/OpenGeoscience/uvdat/commit/0f8100161fcae54bb36ebc798079262867effd9b)) + +* More colormaps ([`d5e9804`](https://github.com/OpenGeoscience/uvdat/commit/d5e9804bc9f34b5803e6911f8d70a82e07e1bb68)) + +* Add more colormap options and use terrain as default ([`5f0624a`](https://github.com/OpenGeoscience/uvdat/commit/5f0624a0f9eef067a4018f46d355840178d9cbf3)) + +* Merge pull request #4 from OpenGeoscience/network-nodes + +Network nodes ([`6d011fd`](https://github.com/OpenGeoscience/uvdat/commit/6d011fdf6475fd6c07b54184b6ff9ebba9e2900c)) + +* Update boston subway dataset url (point to cleaned version) ([`95ae2b5`](https://github.com/OpenGeoscience/uvdat/commit/95ae2b58c36417287e4541e7092064a193f4cda9)) + +* Add DC Metro Dataset ([`c27f2bb`](https://github.com/OpenGeoscience/uvdat/commit/c27f2bbd8eb85609ef82f8906fd187dae6e7385d)) + +* Algorithm fixes and add function to output network as geojson ([`5df2486`](https://github.com/OpenGeoscience/uvdat/commit/5df2486947fd93c7abe1eaa44d5a7b6413e8608f)) + +* Replace hard-coded key "STATION" ([`d612932`](https://github.com/OpenGeoscience/uvdat/commit/d612932bf83c6fffa286436abd822d4ecbefd1ea)) + +* Remove unnecessary column assignment ([`9166a3c`](https://github.com/OpenGeoscience/uvdat/commit/9166a3c8d1a12ca431b2d29d0fdf772c837a988a)) + +* Adjacency algorithm adjustment ([`c0b07af`](https://github.com/OpenGeoscience/uvdat/commit/c0b07afa2f7c2ec0dd44d6412928fa96bb936b2c)) + +* Add Network Nodes to admin interface ([`69871ef`](https://github.com/OpenGeoscience/uvdat/commit/69871ef14146d3651c95ad62620c8155b45d9967)) + +* Write a function in tasks that creates a network representation of a geodataframe ([`e4b1e2f`](https://github.com/OpenGeoscience/uvdat/commit/e4b1e2ff47826689303c8b274160d5369c1c23f2)) + +* Fix bug affecting swagger docs page ([`3b132ef`](https://github.com/OpenGeoscience/uvdat/commit/3b132ef302eb6b01eb0b8000614eb94aed5207a0)) + +* Mark some datasets with network=True prior to conversion process ([`c09ef2a`](https://github.com/OpenGeoscience/uvdat/commit/c09ef2ae715b8b4f5b8ff1178985624b0279a28a)) + +* Create NetworkNode model and serializer ([`e6b60bc`](https://github.com/OpenGeoscience/uvdat/commit/e6b60bcdd4667083484a55e714ed9c1e570876e8)) + +* Run conversion task synchronously in population script (don't send to celery) ([`4bb375b`](https://github.com/OpenGeoscience/uvdat/commit/4bb375b57d272e7d76bea17b746d714fe0001f5f)) + +* Merge pull request #3 from OpenGeoscience/options-panel + +Options panel ([`5415191`](https://github.com/OpenGeoscience/uvdat/commit/54151919f125de9a4b07313c8110dbeb16c3959c)) + +* Fix tests ([`c6041be`](https://github.com/OpenGeoscience/uvdat/commit/c6041be4e2f55c0d7290238c821e829e7c018810)) + +* Remove LocMemCache and fix double quotes ([`8ac7b46`](https://github.com/OpenGeoscience/uvdat/commit/8ac7b46264557fd459d6fa53bab1c62da00e464f)) + +* Add GDAL to requirements ([`dc5a111`](https://github.com/OpenGeoscience/uvdat/commit/dc5a1110e2e46e01b82d72b7ea927d42044d0dc6)) + +* Fix formatting ([`be84aa5`](https://github.com/OpenGeoscience/uvdat/commit/be84aa54556b6af4aa7588ac8cd9066828678bf5)) + +* Add conversion button to Options panel and poll for processing Datasets ([`075f013`](https://github.com/OpenGeoscience/uvdat/commit/075f013a536dd33efabee716b1033512bdd759f4)) + +* Add Dataset conversion endpoint ([`5a6fa94`](https://github.com/OpenGeoscience/uvdat/commit/5a6fa9434f02505d8a41657c4228b98fe96d5845)) + +* Add processing flag to Datasets ([`87b61cf`](https://github.com/OpenGeoscience/uvdat/commit/87b61cf54803b6bc5be39751b66ea955556bf97f)) + +* Delay map spinner appearance by 1 second ([`02f0c03`](https://github.com/OpenGeoscience/uvdat/commit/02f0c03ad5f99d42d2a24dc8000e8117d9b55ee5)) + +* Add raster visualization options ([`1701e90`](https://github.com/OpenGeoscience/uvdat/commit/1701e90163823527318266c88f9870f1bceeb950)) + +* Create basic options panel ([`ba1e500`](https://github.com/OpenGeoscience/uvdat/commit/ba1e500c670d555cf620e8070a512e1e628d80a1)) + +* Merge pull request #2 from OpenGeoscience/raster-coloration + +Raster client-side coloration ([`98f793b`](https://github.com/OpenGeoscience/uvdat/commit/98f793b33a11b391a2743c95442d45813f94e012)) + +* Remove normalization; maintain original values ([`18d06da`](https://github.com/OpenGeoscience/uvdat/commit/18d06da3671b4aad2c7e86e4d44bf814876e5a32)) + +* Add colormap and transparency below sea level ([`d9651d2`](https://github.com/OpenGeoscience/uvdat/commit/d9651d2476985dd585d347bdf235e6fc730d09a4)) + +* Raster conversion should stay grayscale (one channel) ([`d70d8bd`](https://github.com/OpenGeoscience/uvdat/commit/d70d8bd6192e8a8fc8ce0fcd2eb8a49038215758)) + +* Merge pull request #1 from OpenGeoscience/update-readme + +Make setup instructions more clear ([`be80df0`](https://github.com/OpenGeoscience/uvdat/commit/be80df01b2cd54eb1cc282ea2b3a9e22170d822e)) + +* More explicit port explanation ([`4ed448a`](https://github.com/OpenGeoscience/uvdat/commit/4ed448aa154babe414a7432c0de7e2e62a08fe4f)) + +* Fix spacing ([`09db4c0`](https://github.com/OpenGeoscience/uvdat/commit/09db4c098911ad2d76dd44c622d06a51058fe64f)) + +* Make setup instructions more clear ([`8891ea8`](https://github.com/OpenGeoscience/uvdat/commit/8891ea8c054d3dd1ed518d49440e893ff3149f42)) + +* Enable drag-and-drop to reorder layers ([`53aa4aa`](https://github.com/OpenGeoscience/uvdat/commit/53aa4aa2bd5cb39add7f306c6bb9b4cd8850294f)) + +* Write layer creation functions in utils ([`db5f782`](https://github.com/OpenGeoscience/uvdat/commit/db5f782639749f7c3966aa449d32e7ba2c2b352f)) + +* Protect vector tile endpoint from StopIteration errors ([`3c1cf8b`](https://github.com/OpenGeoscience/uvdat/commit/3c1cf8b4e94f654f42054259c05a03058b753d35)) + +* Save all vector tiles in specialized json for faster retrieval ([`374bbde`](https://github.com/OpenGeoscience/uvdat/commit/374bbde4678358f320f942912c25d82b930a2058)) + +* Download data from data.kitware.com in populate script ([`8e5a11d`](https://github.com/OpenGeoscience/uvdat/commit/8e5a11d20071aebfc6a6cb78461f76a28e6dd372)) + +* Update postgis image version ([`ddcdc1a`](https://github.com/OpenGeoscience/uvdat/commit/ddcdc1a4f72c78a4c978bf8c7e7b7d5035ccb431)) + +* Show in UI when a dataset is still processing, use celery in populate command ([`fe4c412`](https://github.com/OpenGeoscience/uvdat/commit/fe4c4124c85a1a8eb180f473c9914bff133d5035)) + +* Add admin page specs for cities and datasets ([`eafaf48`](https://github.com/OpenGeoscience/uvdat/commit/eafaf4809e4def04ba6dc53706094aa972d29b4a)) + +* Add raster dataset (elevation) ([`b6db77d`](https://github.com/OpenGeoscience/uvdat/commit/b6db77dc1f2b23add7d46c30e4049e4cffe84db4)) + +* Don't generate vector tiles client side ([`c76fb47`](https://github.com/OpenGeoscience/uvdat/commit/c76fb479cdb30c14d0552ee26b441a435ad2e5b8)) + +* Add styling to vector tile layers ([`2b0b2d2`](https://github.com/OpenGeoscience/uvdat/commit/2b0b2d2613d56d5914993918ed6403b40ee3ee30)) + +* Don't create vector tiles server-side ([`bf98a4e`](https://github.com/OpenGeoscience/uvdat/commit/bf98a4e602394ee4ec84c6de7820448ed842efd4)) + +* Add web client that makes vector tiles from geojson ([`e78453c`](https://github.com/OpenGeoscience/uvdat/commit/e78453c4878a44135ac89385a8c2d2f90ad324d9)) + +* Start with City and Dataset models ([`35f1ced`](https://github.com/OpenGeoscience/uvdat/commit/35f1ceda8341309d4fb091e223386ec768b54c28)) + +* Cookiecutter initial commit ([`709fb18`](https://github.com/OpenGeoscience/uvdat/commit/709fb188c26aa70a0d9b620b4b0a3efb1914e73d)) diff --git a/MANIFEST.in b/MANIFEST.in new file mode 100644 index 0000000..9c5b0c6 --- /dev/null +++ b/MANIFEST.in @@ -0,0 +1,2 @@ +# Include any data files such as templates or static assets in the source distribution +graft uvdat diff --git a/NOTICE b/NOTICE new file mode 100644 index 0000000..d395d88 --- /dev/null +++ b/NOTICE @@ -0,0 +1,13 @@ +Copyright 2023 Kitware, Inc. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +See accompanying LICENSE file. You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. diff --git a/client/.editorconfig b/client/.editorconfig new file mode 100644 index 0000000..5427234 --- /dev/null +++ b/client/.editorconfig @@ -0,0 +1,7 @@ +[*.{js,jsx,ts,tsx,vue}] +indent_style = space +indent_size = 2 +end_of_line = lf +trim_trailing_whitespace = true +insert_final_newline = true +max_line_length = 100 \ No newline at end of file diff --git a/client/.env.example b/client/.env.example new file mode 100644 index 0000000..abf38b7 --- /dev/null +++ b/client/.env.example @@ -0,0 +1,3 @@ +VUE_APP_API_ROOT=http://localhost:8000/api/v1 +VUE_APP_OAUTH_API_ROOT=http://localhost:8000/oauth/ +VUE_APP_OAUTH_CLIENT_ID=devClientId diff --git a/client/.env.production b/client/.env.production new file mode 100644 index 0000000..abf38b7 --- /dev/null +++ b/client/.env.production @@ -0,0 +1,3 @@ +VUE_APP_API_ROOT=http://localhost:8000/api/v1 +VUE_APP_OAUTH_API_ROOT=http://localhost:8000/oauth/ +VUE_APP_OAUTH_CLIENT_ID=devClientId diff --git a/client/.gitignore b/client/.gitignore new file mode 100644 index 0000000..7ceb59f --- /dev/null +++ b/client/.gitignore @@ -0,0 +1,25 @@ +# Logs +logs +*.log +npm-debug.log* +yarn-debug.log* +yarn-error.log* +pnpm-debug.log* +lerna-debug.log* + +node_modules +dist +dist-ssr +*.local + +# Editor directories and files +.vscode/* +!.vscode/extensions.json +.idea +.DS_Store +*.suo +*.ntvs* +*.njsproj +*.sln +*.sw? +.env diff --git a/client/README.md b/client/README.md new file mode 100644 index 0000000..52911df --- /dev/null +++ b/client/README.md @@ -0,0 +1,18 @@ +# Client Code + +## Client Development Initialization + + + Follow the setup guide documentation to initialize the django back-end and create a clientId for the application. + +Copy the example.env file to a .env file and set the environment variables for your system. + +below are the default values for local development: +``` +VUE_APP_API_ROOT=http://localhost:8000/api/v1 +VUE_APP_OAUTH_API_ROOT=http://localhost:8000/oauth/ +VUE_APP_OAUTH_CLIENT_ID=devClientId +``` + +After configuring the clientId from the setup and copying over the files run `npm run dev` to initialize the client application on `http://localhost:3000` + diff --git a/client/index.html b/client/index.html new file mode 100644 index 0000000..2f2e14a --- /dev/null +++ b/client/index.html @@ -0,0 +1,13 @@ + + + + + + + DIVERS-H WebVis + + +
+ + + diff --git a/client/package-lock.json b/client/package-lock.json new file mode 100644 index 0000000..95b7ebe --- /dev/null +++ b/client/package-lock.json @@ -0,0 +1,12063 @@ +{ + "name": "client", + "version": "0.0.0", + "lockfileVersion": 3, + "requires": true, + "packages": { + "": { + "name": "client", + "version": "0.0.0", + "dependencies": { + "@girder/oauth-client": "^0.8.0", + "@mapbox/mapbox-gl-draw": "^1.5.0", + "@mdi/font": "^7.4.47", + "@turf/bearing": "^7.1.0", + "@turf/center": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/midpoint": "^7.1.0", + "@turf/transform-rotate": "^7.1.0", + "@turf/transform-scale": "^7.1.0", + "@turf/turf": "^7.1.0", + "axios": "^1.4.0", + "d3": "^7.9.0", + "django-s3-file-field": "^1.0.1", + "lodash": "^4.17.21", + "maplibre-gl": "^4.7.0", + "pmtiles": "^3.2.1", + "vue": "^3.4.29", + "vue-router": "^4.4.0", + "vuedraggable": "^4.1.0", + "vuetify": "^3.6.13" + }, + "devDependencies": { + "@types/d3": "^7.4.3", + "@types/jest": "^29.5.12", + "@types/lodash": "^4.17.7", + "@types/mapbox__mapbox-gl-draw": "^1.4.6", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/eslint-config-airbnb-with-typescript": "^8.0.0", + "@vue/eslint-config-typescript": "^13.0.0", + "eslint": "^8.57.0", + "eslint-plugin-vue": "^9.27.0", + "jest": "^29.7.0", + "typescript": "^5.2.2", + "vite": "^5.3.1", + "vite-plugin-vuetify": "^2.0.3", + "vue-tsc": "^2.0.21" + } + }, + "node_modules/@ampproject/remapping": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/@ampproject/remapping/-/remapping-2.3.0.tgz", + "integrity": "sha512-30iZtAPgz+LTIYoeivqYo853f02jBYSd5uGnGpkFV0M3xOt9aN73erkgYAmZU43x4VfqcnLxW9Kpg3R5LC4YYw==", + "dev": true, + "dependencies": { + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/code-frame": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/code-frame/-/code-frame-7.24.7.tgz", + "integrity": "sha512-BcYH1CVJBO9tvyIZ2jVeXgSIMvGZ2FDRvDdOIVQyuklNKSsx+eppDEBq/g47Ayw+RqNFE+URvOShmf+f/qwAlA==", + "dev": true, + "dependencies": { + "@babel/highlight": "^7.24.7", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/compat-data": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/compat-data/-/compat-data-7.25.4.tgz", + "integrity": "sha512-+LGRog6RAsCJrrrg/IO6LGmpphNe5DiK30dGjCoxxeGv49B10/3XYGxPsAwrDlMFcFEvdAUavDT8r9k/hSyQqQ==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/core": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/core/-/core-7.25.2.tgz", + "integrity": "sha512-BBt3opiCOxUr9euZ5/ro/Xv8/V7yJ5bjYMqG/C1YAo8MIKAnumZalCN+msbci3Pigy4lIQfPUpfMM27HMGaYEA==", + "dev": true, + "dependencies": { + "@ampproject/remapping": "^2.2.0", + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.0", + "@babel/helper-compilation-targets": "^7.25.2", + "@babel/helper-module-transforms": "^7.25.2", + "@babel/helpers": "^7.25.0", + "@babel/parser": "^7.25.0", + "@babel/template": "^7.25.0", + "@babel/traverse": "^7.25.2", + "@babel/types": "^7.25.2", + "convert-source-map": "^2.0.0", + "debug": "^4.1.0", + "gensync": "^1.0.0-beta.2", + "json5": "^2.2.3", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/babel" + } + }, + "node_modules/@babel/core/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/generator": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/generator/-/generator-7.25.6.tgz", + "integrity": "sha512-VPC82gr1seXOpkjAAKoLhP50vx4vGNlF4msF64dSFq1P8RfB+QAuJWGHPXXPc8QyfVWwwB/TNNU4+ayZmHNbZw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.25.6", + "@jridgewell/gen-mapping": "^0.3.5", + "@jridgewell/trace-mapping": "^0.3.25", + "jsesc": "^2.5.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-compilation-targets/-/helper-compilation-targets-7.25.2.tgz", + "integrity": "sha512-U2U5LsSaZ7TAt3cfaymQ8WHh0pxvdHoEk6HVpaexxixjyEquMh0L0YNJNM6CTGKMXV1iksi0iZkGw4AcFkPaaw==", + "dev": true, + "dependencies": { + "@babel/compat-data": "^7.25.2", + "@babel/helper-validator-option": "^7.24.8", + "browserslist": "^4.23.1", + "lru-cache": "^5.1.1", + "semver": "^6.3.1" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-compilation-targets/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/@babel/helper-module-imports": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-module-imports/-/helper-module-imports-7.24.7.tgz", + "integrity": "sha512-8AyH3C+74cgCVVXow/myrynrAGv+nTVg5vKu2nZph9x7RcRwzmh0VFallJuFTZ9mx6u4eSdXZfcOzSqTUm0HCA==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-module-transforms": { + "version": "7.25.2", + "resolved": "https://registry.npmjs.org/@babel/helper-module-transforms/-/helper-module-transforms-7.25.2.tgz", + "integrity": "sha512-BjyRAbix6j/wv83ftcVJmBt72QtHI56C7JXZoG2xATiLpmoC7dpd8WnkikExHDVPpi/3qCmO6WY1EaXOluiecQ==", + "dev": true, + "dependencies": { + "@babel/helper-module-imports": "^7.24.7", + "@babel/helper-simple-access": "^7.24.7", + "@babel/helper-validator-identifier": "^7.24.7", + "@babel/traverse": "^7.25.2" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/@babel/helper-plugin-utils": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-plugin-utils/-/helper-plugin-utils-7.24.8.tgz", + "integrity": "sha512-FFWx5142D8h2Mgr/iPVGH5G7w6jDn4jUSpZTyDnQO0Yn7Ks2Kuz6Pci8H6MPCoUJegd/UZQ3tAvfLCxQSnWWwg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-simple-access": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-simple-access/-/helper-simple-access-7.24.7.tgz", + "integrity": "sha512-zBAIvbCMh5Ts+b86r/CjU+4XGYIs+R1j951gxI3KmmxBMhCg4oQMsv6ZXQ64XOm/cvzfU1FmoCyt6+owc5QMYg==", + "dev": true, + "dependencies": { + "@babel/traverse": "^7.24.7", + "@babel/types": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-string-parser": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-string-parser/-/helper-string-parser-7.24.8.tgz", + "integrity": "sha512-pO9KhhRcuUyGnJWwyEgnRJTSIZHiT+vMD0kPeD+so0l7mxkMT19g3pjY9GTnHySck/hDzq+dtW/4VgnMkippsQ==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-identifier": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-identifier/-/helper-validator-identifier-7.24.7.tgz", + "integrity": "sha512-rR+PBcQ1SMQDDyF6X0wxtG8QyLCgUB0eRAGguqRLfkCA87l7yAP7ehq8SNj96OOGTO8OBV70KhuFYcIkHXOg0w==", + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helper-validator-option": { + "version": "7.24.8", + "resolved": "https://registry.npmjs.org/@babel/helper-validator-option/-/helper-validator-option-7.24.8.tgz", + "integrity": "sha512-xb8t9tD1MHLungh/AIoWYN+gVHaB9kwlu8gffXGSt3FFEIT7RjS+xWbc2vUD1UTZdIpKj/ab3rdqJ7ufngyi2Q==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/helpers": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/helpers/-/helpers-7.25.6.tgz", + "integrity": "sha512-Xg0tn4HcfTijTwfDwYlvVCl43V6h4KyVVX2aEm4qdO/PC6L2YvzLHFdmxhoeSA3eslcE6+ZVXHgWwopXYLNq4Q==", + "dev": true, + "dependencies": { + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/highlight/-/highlight-7.24.7.tgz", + "integrity": "sha512-EStJpq4OuY8xYfhGVXngigBJRWxftKX9ksiGDnmlY3o7B/V7KIAc9X4oiK87uPJSc/vs5L869bem5fhZa8caZw==", + "dev": true, + "dependencies": { + "@babel/helper-validator-identifier": "^7.24.7", + "chalk": "^2.4.2", + "js-tokens": "^4.0.0", + "picocolors": "^1.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/highlight/node_modules/ansi-styles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-3.2.1.tgz", + "integrity": "sha512-VT0ZI6kZRdTh8YyJw3SMbYm/u+NqfsAxEpWO0Pf9sq8/e94WxxOpPKx9FR1FlyCtOVDNOQ+8ntlqFxiRc+r5qA==", + "dev": true, + "dependencies": { + "color-convert": "^1.9.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/chalk": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-2.4.2.tgz", + "integrity": "sha512-Mti+f9lpJNcwF4tWV8/OrTTtF1gZi+f8FqlyAdouralcFWFQWF2+NgCHShjkCb+IFBLq9buZwE1xckQU4peSuQ==", + "dev": true, + "dependencies": { + "ansi-styles": "^3.2.1", + "escape-string-regexp": "^1.0.5", + "supports-color": "^5.3.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/color-convert": { + "version": "1.9.3", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-1.9.3.tgz", + "integrity": "sha512-QfAUtd+vFdAtFQcC8CCyYt1fYWxSqAiK2cSD6zDB8N3cpsEBAvRxp9zOGg6G/SHHJYAT88/az/IuDGALsNVbGg==", + "dev": true, + "dependencies": { + "color-name": "1.1.3" + } + }, + "node_modules/@babel/highlight/node_modules/color-name": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.3.tgz", + "integrity": "sha512-72fSenhMw2HZMTVHeCA9KCmpEIbzWiQsjN+BHcBbS9vr1mtt+vJjPdksIBNUmKAW8TFUDPJK5SUU3QhE9NEXDw==", + "dev": true + }, + "node_modules/@babel/highlight/node_modules/escape-string-regexp": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-1.0.5.tgz", + "integrity": "sha512-vbRorB5FUQWvla16U8R/qgaFIya2qGzwDrNmCZuYKrbdSUMG6I1ZCGQRefkRVhuOkIGVne7BQ35DSfo1qvJqFg==", + "dev": true, + "engines": { + "node": ">=0.8.0" + } + }, + "node_modules/@babel/highlight/node_modules/has-flag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-3.0.0.tgz", + "integrity": "sha512-sKJf1+ceQBr4SMkvQnBDNDtf4TXpVhVGateu0t918bl30FnbE2m4vNLX+VWe/dpjlb+HugGYzW7uQXH98HPEYw==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/highlight/node_modules/supports-color": { + "version": "5.5.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-5.5.0.tgz", + "integrity": "sha512-QjVjwdXIt408MIiAqCX4oUKsgU2EqAGzs2Ppkm4aQYbjm+ZEWEcW4SfFNTr4uMNZma0ey4f5lgLrkB0aX0QMow==", + "dev": true, + "dependencies": { + "has-flag": "^3.0.0" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/parser": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/parser/-/parser-7.25.6.tgz", + "integrity": "sha512-trGdfBdbD0l1ZPmcJ83eNxB9rbEax4ALFTF7fN386TMYbeCQbyme5cOEXQhbGXKebwGaB/J52w1mrklMcbgy6Q==", + "dependencies": { + "@babel/types": "^7.25.6" + }, + "bin": { + "parser": "bin/babel-parser.js" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@babel/plugin-syntax-async-generators": { + "version": "7.8.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-async-generators/-/plugin-syntax-async-generators-7.8.4.tgz", + "integrity": "sha512-tycmZxkGfZaxhMRbXlPXuVFpdWlXpir2W4AMhSJgRKzk/eDlIXOhb2LHWoLpDF7TEHylV5zNhykX6KAgHJmTNw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-bigint": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-bigint/-/plugin-syntax-bigint-7.8.3.tgz", + "integrity": "sha512-wnTnFlG+YxQm3vDxpGE57Pj0srRU4sHE/mDkt1qv2YJJSeUAec2ma4WLUnUPeKjyrfntVwe/N6dCXpU+zL3Npg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-properties": { + "version": "7.12.13", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-properties/-/plugin-syntax-class-properties-7.12.13.tgz", + "integrity": "sha512-fm4idjKla0YahUNgFNLCB0qySdsoPiZP3iQE3rky0mBUtMZ23yDJ9SJdg6dXTSDnulOVqiF3Hgr9nbXvXTQZYA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.12.13" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-class-static-block": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-class-static-block/-/plugin-syntax-class-static-block-7.14.5.tgz", + "integrity": "sha512-b+YyPmr6ldyNnM6sqYeMWE+bgJcJpO6yS4QD7ymxgH34GBPNDM/THBh8iunyvKIZztiwLH4CJZ0RxTk9emgpjw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-attributes": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-attributes/-/plugin-syntax-import-attributes-7.25.6.tgz", + "integrity": "sha512-sXaDXaJN9SNLymBdlWFA+bjzBhFD617ZaFiY13dGt7TVslVvVgA6fkZOP7Ki3IGElC45lwHdOTrCtKZGVAWeLQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-import-meta": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-import-meta/-/plugin-syntax-import-meta-7.10.4.tgz", + "integrity": "sha512-Yqfm+XDx0+Prh3VSeEQCPU81yC+JWZ2pDPFSS4ZdpfZhp4MkFMaDC1UqseovEKwSUpnIL7+vK+Clp7bfh0iD7g==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-json-strings": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-json-strings/-/plugin-syntax-json-strings-7.8.3.tgz", + "integrity": "sha512-lY6kdGpWHvjoe2vk4WrAapEuBR69EMxZl+RoGRhrFGNYVK8mOPAW8VfbT/ZgrFbXlDNiiaxQnAtgVCZ6jv30EA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-jsx": { + "version": "7.24.7", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-jsx/-/plugin-syntax-jsx-7.24.7.tgz", + "integrity": "sha512-6ddciUPe/mpMnOKv/U+RSd2vvVy+Yw/JfBB0ZHYjEZt9NLHmCUylNYlsbqCCS1Bffjlb0fCwC9Vqz+sBz6PsiQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.7" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-logical-assignment-operators": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-logical-assignment-operators/-/plugin-syntax-logical-assignment-operators-7.10.4.tgz", + "integrity": "sha512-d8waShlpFDinQ5MtvGU9xDAOzKH47+FFoney2baFIoMr952hKOLp1HR7VszoZvOsV/4+RRszNY7D17ba0te0ig==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-nullish-coalescing-operator": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-nullish-coalescing-operator/-/plugin-syntax-nullish-coalescing-operator-7.8.3.tgz", + "integrity": "sha512-aSff4zPII1u2QD7y+F8oDsz19ew4IGEJg9SVW+bqwpwtfFleiQDMdzA/R+UlWDzfnHFCxxleFT0PMIrR36XLNQ==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-numeric-separator": { + "version": "7.10.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-numeric-separator/-/plugin-syntax-numeric-separator-7.10.4.tgz", + "integrity": "sha512-9H6YdfkcK/uOnY/K7/aA2xpzaAgkQn37yzWUMRK7OaPOqOpGS1+n0H5hxT9AUw9EsSjPW8SVyMJwYRtWs3X3ug==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.10.4" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-object-rest-spread": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-object-rest-spread/-/plugin-syntax-object-rest-spread-7.8.3.tgz", + "integrity": "sha512-XoqMijGZb9y3y2XskN+P1wUGiVwWZ5JmoDRwx5+3GmEplNyVM2s2Dg8ILFQm8rWM48orGy5YpI5Bl8U1y7ydlA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-catch-binding": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-catch-binding/-/plugin-syntax-optional-catch-binding-7.8.3.tgz", + "integrity": "sha512-6VPD0Pc1lpTqw0aKoeRTMiB+kWhAoT24PA+ksWSBrFtl5SIRVpZlwN3NNPQjehA2E/91FV3RjLWoVTglWcSV3Q==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-optional-chaining": { + "version": "7.8.3", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-optional-chaining/-/plugin-syntax-optional-chaining-7.8.3.tgz", + "integrity": "sha512-KoK9ErH1MBlCPxV0VANkXW2/dw4vlbGDrFgz8bmUsBGYkFRcbRwMh6cIJubdPrkxRwuGdtCk0v/wPTKbQgBjkg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.8.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-private-property-in-object": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-private-property-in-object/-/plugin-syntax-private-property-in-object-7.14.5.tgz", + "integrity": "sha512-0wVnp9dxJ72ZUJDV27ZfbSj6iHLoytYZmh3rFcxNnvsJF3ktkzLDZPy/mA17HGsaQT3/DQsWYX1f1QGWkCoVUg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-top-level-await": { + "version": "7.14.5", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-top-level-await/-/plugin-syntax-top-level-await-7.14.5.tgz", + "integrity": "sha512-hx++upLv5U1rgYfwe1xBQUhRmU41NEvpUvrp8jkrSCdvGSnM5/qdRMtylJ6PG5OFkBaHkbTAKTnd3/YyESRHFw==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.14.5" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/plugin-syntax-typescript": { + "version": "7.25.4", + "resolved": "https://registry.npmjs.org/@babel/plugin-syntax-typescript/-/plugin-syntax-typescript-7.25.4.tgz", + "integrity": "sha512-uMOCoHVU52BsSWxPOMVv5qKRdeSlPuImUCB2dlPuBSU+W2/ROE7/Zg8F2Kepbk+8yBa68LlRKxO+xgEVWorsDg==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.24.8" + }, + "engines": { + "node": ">=6.9.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0-0" + } + }, + "node_modules/@babel/template": { + "version": "7.25.0", + "resolved": "https://registry.npmjs.org/@babel/template/-/template-7.25.0.tgz", + "integrity": "sha512-aOOgh1/5XzKvg1jvVz7AVrx2piJ2XBi227DHmbY6y+bM9H2FlN+IfecYu4Xl0cNiiVejlsCri89LUsbj8vJD9Q==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/parser": "^7.25.0", + "@babel/types": "^7.25.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/traverse/-/traverse-7.25.6.tgz", + "integrity": "sha512-9Vrcx5ZW6UwK5tvqsj0nGpp/XzqthkT0dqIc9g1AdtygFToNtTF67XzYS//dm+SAK9cp3B9R4ZO/46p63SCjlQ==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.24.7", + "@babel/generator": "^7.25.6", + "@babel/parser": "^7.25.6", + "@babel/template": "^7.25.0", + "@babel/types": "^7.25.6", + "debug": "^4.3.1", + "globals": "^11.1.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@babel/traverse/node_modules/globals": { + "version": "11.12.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-11.12.0.tgz", + "integrity": "sha512-WOBp/EEGUiIsJSp7wcv/y6MO+lV9UoncWqxuFfm8eBwzWNgyfBd6Gz+IeKQ9jCmyhoH99g15M3T+QaVHFjizVA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/@babel/types": { + "version": "7.25.6", + "resolved": "https://registry.npmjs.org/@babel/types/-/types-7.25.6.tgz", + "integrity": "sha512-/l42B1qxpG6RdfYf343Uw1vmDjeNhneUXtzhojE7pDgfpEypmRhI6j1kr17XCVv4Cgl9HdAiQY2x0GwKm7rWCw==", + "dependencies": { + "@babel/helper-string-parser": "^7.24.8", + "@babel/helper-validator-identifier": "^7.24.7", + "to-fast-properties": "^2.0.0" + }, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/@bcoe/v8-coverage": { + "version": "0.2.3", + "resolved": "https://registry.npmjs.org/@bcoe/v8-coverage/-/v8-coverage-0.2.3.tgz", + "integrity": "sha512-0hYQ8SB4Db5zvZB4axdMHGwEaQjkZzFjQiN9LVYvIFB2nSUHW9tYpxWriPrWDASIxiaXax83REcLxuSdnGPZtw==", + "dev": true + }, + "node_modules/@esbuild/aix-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/aix-ppc64/-/aix-ppc64-0.21.5.tgz", + "integrity": "sha512-1SDgH6ZSPTlggy1yI6+Dbkiz8xzpHJEVAlF/AM1tHPLsf5STom9rwtjE4hKAF20FfXXNTFqEYXyJNWh1GiZedQ==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "aix" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm/-/android-arm-0.21.5.tgz", + "integrity": "sha512-vCPvzSjpPHEi1siZdlvAlsPxXl7WbOVUBBAowWug4rJHb68Ox8KualB+1ocNvT5fjv6wpkX6o/iEpbDrf68zcg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-arm64/-/android-arm64-0.21.5.tgz", + "integrity": "sha512-c0uX9VAUBQ7dTDCjq+wdyGLowMdtR/GoC2U5IYk/7D1H1JYC0qseD7+11iMP2mRLN9RcCMRcjC4YMclCzGwS/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/android-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/android-x64/-/android-x64-0.21.5.tgz", + "integrity": "sha512-D7aPRUUNHRBwHxzxRvp856rjUHRFW1SdQATKXH2hqA0kAZb1hKmi02OpYRacl0TxIGz/ZmXWlbZgjwWYaCakTA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "android" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-arm64/-/darwin-arm64-0.21.5.tgz", + "integrity": "sha512-DwqXqZyuk5AiWWf3UfLiRDJ5EDd49zg6O9wclZ7kUMv2WRFr4HKjXp/5t8JZ11QbQfUS6/cRCKGwYhtNAY88kQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/darwin-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/darwin-x64/-/darwin-x64-0.21.5.tgz", + "integrity": "sha512-se/JjF8NlmKVG4kNIuyWMV/22ZaerB+qaSi5MdrXtd6R08kvs2qCN4C09miupktDitvh8jRFflwGFBQcxZRjbw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-arm64/-/freebsd-arm64-0.21.5.tgz", + "integrity": "sha512-5JcRxxRDUJLX8JXp/wcBCy3pENnCgBR9bN6JsY4OmhfUtIHe3ZW0mawA7+RDAcMLrMIZaf03NlQiX9DGyB8h4g==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/freebsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/freebsd-x64/-/freebsd-x64-0.21.5.tgz", + "integrity": "sha512-J95kNBj1zkbMXtHVH29bBriQygMXqoVQOQYA+ISs0/2l3T9/kj42ow2mpqerRBxDJnmkUDCaQT/dfNXWX/ZZCQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm/-/linux-arm-0.21.5.tgz", + "integrity": "sha512-bPb5AHZtbeNGjCKVZ9UGqGwo8EUu4cLq68E95A53KlxAPRmUyYv2D6F0uUI65XisGOL1hBP5mTronbgo+0bFcA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-arm64/-/linux-arm64-0.21.5.tgz", + "integrity": "sha512-ibKvmyYzKsBeX8d8I7MH/TMfWDXBF3db4qM6sy+7re0YXya+K1cem3on9XgdT2EQGMu4hQyZhan7TeQ8XkGp4Q==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ia32/-/linux-ia32-0.21.5.tgz", + "integrity": "sha512-YvjXDqLRqPDl2dvRODYmmhz4rPeVKYvppfGYKSNGdyZkA01046pLWyRKKI3ax8fbJoK5QbxblURkwK/MWY18Tg==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-loong64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-loong64/-/linux-loong64-0.21.5.tgz", + "integrity": "sha512-uHf1BmMG8qEvzdrzAqg2SIG/02+4/DHB6a9Kbya0XDvwDEKCoC8ZRWI5JJvNdUjtciBGFQ5PuBlpEOXQj+JQSg==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-mips64el": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-mips64el/-/linux-mips64el-0.21.5.tgz", + "integrity": "sha512-IajOmO+KJK23bj52dFSNCMsz1QP1DqM6cwLUv3W1QwyxkyIWecfafnI555fvSGqEKwjMXVLokcV5ygHW5b3Jbg==", + "cpu": [ + "mips64el" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-ppc64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-ppc64/-/linux-ppc64-0.21.5.tgz", + "integrity": "sha512-1hHV/Z4OEfMwpLO8rp7CvlhBDnjsC3CttJXIhBi+5Aj5r+MBvy4egg7wCbe//hSsT+RvDAG7s81tAvpL2XAE4w==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-riscv64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-riscv64/-/linux-riscv64-0.21.5.tgz", + "integrity": "sha512-2HdXDMd9GMgTGrPWnJzP2ALSokE/0O5HhTUvWIbD3YdjME8JwvSCnNGBnTThKGEB91OZhzrJ4qIIxk/SBmyDDA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-s390x": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-s390x/-/linux-s390x-0.21.5.tgz", + "integrity": "sha512-zus5sxzqBJD3eXxwvjN1yQkRepANgxE9lgOW2qLnmr8ikMTphkjgXu1HR01K4FJg8h1kEEDAqDcZQtbrRnB41A==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/linux-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/linux-x64/-/linux-x64-0.21.5.tgz", + "integrity": "sha512-1rYdTpyv03iycF1+BhzrzQJCdOuAOtaqHTWJZCWvijKD2N5Xu0TtVC8/+1faWqcP9iBCWOmjmhoH94dH82BxPQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/netbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/netbsd-x64/-/netbsd-x64-0.21.5.tgz", + "integrity": "sha512-Woi2MXzXjMULccIwMnLciyZH4nCIMpWQAs049KEeMvOcNADVxo0UBIQPfSmxB3CWKedngg7sWZdLvLczpe0tLg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "netbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/openbsd-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/openbsd-x64/-/openbsd-x64-0.21.5.tgz", + "integrity": "sha512-HLNNw99xsvx12lFBUwoT8EVCsSvRNDVxNpjZ7bPn947b8gJPzeHWyNVhFsaerc0n3TsbOINvRP2byTZ5LKezow==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "openbsd" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/sunos-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/sunos-x64/-/sunos-x64-0.21.5.tgz", + "integrity": "sha512-6+gjmFpfy0BHU5Tpptkuh8+uw3mnrvgs+dSPQXQOv3ekbordwnzTVEb4qnIvQcYXq6gzkyTnoZ9dZG+D4garKg==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "sunos" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-arm64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-arm64/-/win32-arm64-0.21.5.tgz", + "integrity": "sha512-Z0gOTd75VvXqyq7nsl93zwahcTROgqvuAcYDUr+vOv8uHhNSKROyU961kgtCD1e95IqPKSQKH7tBTslnS3tA8A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-ia32": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-ia32/-/win32-ia32-0.21.5.tgz", + "integrity": "sha512-SWXFF1CL2RVNMaVs+BBClwtfZSvDgtL//G/smwAc5oVK/UPu2Gu9tIaRgFmYFFKrmg3SyAjSrElf0TiJ1v8fYA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@esbuild/win32-x64": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/@esbuild/win32-x64/-/win32-x64-0.21.5.tgz", + "integrity": "sha512-tQd/1efJuzPC6rCFwEvLtci/xNFcTZknmXs98FYDfGE4wP9ClFV98nyKrzJKVPMhdDnjzLhdUyMX4PsQAPjwIw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ], + "engines": { + "node": ">=12" + } + }, + "node_modules/@eslint-community/eslint-utils": { + "version": "4.4.0", + "resolved": "https://registry.npmjs.org/@eslint-community/eslint-utils/-/eslint-utils-4.4.0.tgz", + "integrity": "sha512-1/sA4dwrzBAyeUoQ6oxahHKmrZvsnLCg4RfxW3ZFGGmQkSNQPFNLV9CUEFQP1x9EYXHTo5p6xdhZM1Ne9p/AfA==", + "dev": true, + "dependencies": { + "eslint-visitor-keys": "^3.3.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.0.0 || ^7.0.0 || >=8.0.0" + } + }, + "node_modules/@eslint-community/regexpp": { + "version": "4.11.1", + "resolved": "https://registry.npmjs.org/@eslint-community/regexpp/-/regexpp-4.11.1.tgz", + "integrity": "sha512-m4DVN9ZqskZoLU5GlWZadwDnYo3vAEydiUayB9widCl9ffWx2IvPnp6n3on5rJmziJSw9Bv+Z3ChDVdMwXCY8Q==", + "dev": true, + "engines": { + "node": "^12.0.0 || ^14.0.0 || >=16.0.0" + } + }, + "node_modules/@eslint-types/import": { + "version": "2.29.0-1", + "resolved": "https://registry.npmjs.org/@eslint-types/import/-/import-2.29.0-1.tgz", + "integrity": "sha512-cmlKmWLY9PKmsxKdb5DlXZBe6SV3fIyhoMj+lBVUeW5d9Dvqs62Hk+jskz4D9B3x+dEwDez29ScTog04K8WpUQ==", + "dev": true + }, + "node_modules/@eslint-types/typescript-eslint": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@eslint-types/typescript-eslint/-/typescript-eslint-6.21.0.tgz", + "integrity": "sha512-ao4TdMLw+zFdAJ9q6iBBxC5GSrJ14Hpv0VKaergr++jRTDaGgoYiAq84tx1FYqUJzQgzJC7dm6s52IAQP7EiHA==", + "dev": true + }, + "node_modules/@eslint/eslintrc": { + "version": "2.1.4", + "resolved": "https://registry.npmjs.org/@eslint/eslintrc/-/eslintrc-2.1.4.tgz", + "integrity": "sha512-269Z39MS6wVJtsoUl10L60WdkhJVdPG24Q4eZTH3nnF6lpvSShEK3wQjDX9JRWAUPvPh7COouPpU9IrqaZFvtQ==", + "dev": true, + "dependencies": { + "ajv": "^6.12.4", + "debug": "^4.3.2", + "espree": "^9.6.0", + "globals": "^13.19.0", + "ignore": "^5.2.0", + "import-fresh": "^3.2.1", + "js-yaml": "^4.1.0", + "minimatch": "^3.1.2", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/@eslint/eslintrc/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@eslint/eslintrc/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@eslint/js": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/@eslint/js/-/js-8.57.0.tgz", + "integrity": "sha512-Ys+3g2TaW7gADOJzPt83SJtCDhMjndcDMFVQ/Tj9iA1BfJzFKD9mAUXT3OenpuPHbI6P/myECxRJrofUsDx/5g==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + } + }, + "node_modules/@girder/oauth-client": { + "version": "0.8.0", + "resolved": "https://registry.npmjs.org/@girder/oauth-client/-/oauth-client-0.8.0.tgz", + "integrity": "sha512-uOEKyerB3BArN/t4UJxA2+L35ykidk60RNN+XwFXlVUVjZMuajaLFB6/r53Tr977/k8D1RJnBjosAfgl7oLTzg==", + "dependencies": { + "@openid/appauth": "^1.3.0" + } + }, + "node_modules/@humanwhocodes/config-array": { + "version": "0.11.14", + "resolved": "https://registry.npmjs.org/@humanwhocodes/config-array/-/config-array-0.11.14.tgz", + "integrity": "sha512-3T8LkOmg45BV5FICb15QQMsyUSWrQ8AygVfC7ZG32zOalnqrilm018ZVCw0eapXux8FtA33q8PSRSstjee3jSg==", + "deprecated": "Use @eslint/config-array instead", + "dev": true, + "dependencies": { + "@humanwhocodes/object-schema": "^2.0.2", + "debug": "^4.3.1", + "minimatch": "^3.0.5" + }, + "engines": { + "node": ">=10.10.0" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/@humanwhocodes/config-array/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/@humanwhocodes/module-importer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/@humanwhocodes/module-importer/-/module-importer-1.0.1.tgz", + "integrity": "sha512-bxveV4V8v5Yb4ncFTT3rPSgZBOpCkjfK0y4oVVVJwIuDVBRMDXrPyXRL988i5ap9m9bnyEEjWfm5WkBmtffLfA==", + "dev": true, + "engines": { + "node": ">=12.22" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/nzakas" + } + }, + "node_modules/@humanwhocodes/object-schema": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@humanwhocodes/object-schema/-/object-schema-2.0.3.tgz", + "integrity": "sha512-93zYdMES/c1D69yZiKDBj0V24vqNzB/koF26KPaagAfd3P/4gUlh3Dys5ogAK+Exi9QyzlD8x/08Zt7wIKcDcA==", + "deprecated": "Use @eslint/object-schema instead", + "dev": true + }, + "node_modules/@istanbuljs/load-nyc-config": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@istanbuljs/load-nyc-config/-/load-nyc-config-1.1.0.tgz", + "integrity": "sha512-VjeHSlIzpv/NyD3N0YuHfXOPDIixcA1q2ZV98wsMqcYlPmv2n3Yb2lYP9XMElnaFVXg5A7YLTeLu6V84uQDjmQ==", + "dev": true, + "dependencies": { + "camelcase": "^5.3.1", + "find-up": "^4.1.0", + "get-package-type": "^0.1.0", + "js-yaml": "^3.13.1", + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/argparse": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-1.0.10.tgz", + "integrity": "sha512-o5Roy6tNG4SL/FOkCAN6RzjiakZS25RLYFrcMttJqbdd8BWrnA+fGz57iN5Pb06pvBGvl5gQ0B48dJlslXvoTg==", + "dev": true, + "dependencies": { + "sprintf-js": "~1.0.2" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/js-yaml": { + "version": "3.14.1", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-3.14.1.tgz", + "integrity": "sha512-okMH7OXXJ7YrN9Ok3/SXrnu4iX9yOk+25nqX4imS2npuvTYDmo/QEZoqwZkYaIDk3jVvBOTOIEgEhaLOynBS9g==", + "dev": true, + "dependencies": { + "argparse": "^1.0.7", + "esprima": "^4.0.0" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/load-nyc-config/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@istanbuljs/schema": { + "version": "0.1.3", + "resolved": "https://registry.npmjs.org/@istanbuljs/schema/-/schema-0.1.3.tgz", + "integrity": "sha512-ZXRY4jNvVgSVQ8DL3LTcakaAtXwTVUxE81hslsyD2AtoXW/wVob10HkOJ1X/pAlcI7D+2YoZKg5do8G/w6RYgA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/@jest/console": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/console/-/console-29.7.0.tgz", + "integrity": "sha512-5Ni4CU7XHQi32IJ398EEP4RrB8eV09sXP2ROqD4bksHrnTree52PsxvX8tpL8LvTZ3pFzXyPbNQReSN41CAhOg==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/core": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/core/-/core-29.7.0.tgz", + "integrity": "sha512-n7aeXWKMnGtDA48y8TLWJPJmLmmZ642Ceo78cYWEpiD7FzDgmNDV/GCVRorPABdXLJZ/9wzzgZAlHjXjxDHGsg==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/reporters": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-changed-files": "^29.7.0", + "jest-config": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-resolve-dependencies": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "jest-watcher": "^29.7.0", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/environment": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/environment/-/environment-29.7.0.tgz", + "integrity": "sha512-aQIfHDq33ExsN4jP1NWGXhxgQ/wixs60gDiKO+XVMd8Mn0NWPWgc34ZQDTb2jKaUWQ7MuwoitXAsN2XVXNMpAw==", + "dev": true, + "dependencies": { + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-8uMeAMycttpva3P1lBHB8VciS9V0XAr3GymPpipdyQXbBcuhkLQOSe8E/p92RyAdToS6ZD1tFkX+CkhoECE0dQ==", + "dev": true, + "dependencies": { + "expect": "^29.7.0", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/expect-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/expect-utils/-/expect-utils-29.7.0.tgz", + "integrity": "sha512-GlsNBWiFQFCVi9QVSx7f5AgMeLxe9YCCs5PuP2O2LdjDAA8Jh9eX7lA1Jq/xdXw3Wb3hyvlFNfZIfcRetSzYcA==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/fake-timers": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/fake-timers/-/fake-timers-29.7.0.tgz", + "integrity": "sha512-q4DH1Ha4TTFPdxLsqDXK1d3+ioSL7yL5oCMJZgDYm6i+6CygW5E5xVr/D1HdsGxjt1ZWSfUAs9OxSB/BNelWrQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@sinonjs/fake-timers": "^10.0.2", + "@types/node": "*", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/globals": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/globals/-/globals-29.7.0.tgz", + "integrity": "sha512-mpiz3dutLbkW2MNFubUGUEVLkTGiqW6yLVTA+JbP6fI6J5iL9Y0Nlg8k95pcF8ctKwCS7WVxteBs29hhfAotzQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/types": "^29.6.3", + "jest-mock": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/reporters": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/reporters/-/reporters-29.7.0.tgz", + "integrity": "sha512-DApq0KJbJOEzAFYjHADNNxAE3KbhxQB1y5Kplb5Waqw6zVbuWatSnMjE5gs8FUgEPmNsnZA3NCWl9NG0ia04Pg==", + "dev": true, + "dependencies": { + "@bcoe/v8-coverage": "^0.2.3", + "@jest/console": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "@types/node": "*", + "chalk": "^4.0.0", + "collect-v8-coverage": "^1.0.0", + "exit": "^0.1.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "istanbul-lib-coverage": "^3.0.0", + "istanbul-lib-instrument": "^6.0.0", + "istanbul-lib-report": "^3.0.0", + "istanbul-lib-source-maps": "^4.0.0", + "istanbul-reports": "^3.1.3", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "slash": "^3.0.0", + "string-length": "^4.0.1", + "strip-ansi": "^6.0.0", + "v8-to-istanbul": "^9.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/@jest/schemas": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/schemas/-/schemas-29.6.3.tgz", + "integrity": "sha512-mo5j5X+jIZmJQveBKeS/clAueipV7KgiX1vMgCxam1RNYiqE1w62n0/tJJnHtjW8ZHcQco5gY85jA3mi0L+nSA==", + "dev": true, + "dependencies": { + "@sinclair/typebox": "^0.27.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/source-map": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/source-map/-/source-map-29.6.3.tgz", + "integrity": "sha512-MHjT95QuipcPrpLM+8JMSzFx6eHp5Bm+4XeFDJlwsvVBjmKNiIAvasGK2fxz2WbGRlnvqehFbh07MMa7n3YJnw==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.18", + "callsites": "^3.0.0", + "graceful-fs": "^4.2.9" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-result": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-result/-/test-result-29.7.0.tgz", + "integrity": "sha512-Fdx+tv6x1zlkJPcWXmMDAG2HBnaR9XPSd5aDWQVsfrZmLVT3lU1cwyxLgRmXR9yrq4NBoEm9BMsfgFzTQAbJYA==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "collect-v8-coverage": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/test-sequencer": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/test-sequencer/-/test-sequencer-29.7.0.tgz", + "integrity": "sha512-GQwJ5WZVrKnOJuiYiAF52UNUJXgTZx1NHjFSEB0qEMmSZKAkdMoIzw/Cj6x6NF4AvV23AUqDpFzQkN/eYCYTxw==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/transform": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/@jest/transform/-/transform-29.7.0.tgz", + "integrity": "sha512-ok/BTPFzFKVMwO5eOHRrvnBVHdRy9IrsrW1GpMaQ9MCnilNLXQKmAX8s1YXDFaai9xJpac2ySzV0YeRRECr2Vw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/types": "^29.6.3", + "@jridgewell/trace-mapping": "^0.3.18", + "babel-plugin-istanbul": "^6.1.1", + "chalk": "^4.0.0", + "convert-source-map": "^2.0.0", + "fast-json-stable-stringify": "^2.1.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "micromatch": "^4.0.4", + "pirates": "^4.0.4", + "slash": "^3.0.0", + "write-file-atomic": "^4.0.2" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jest/types": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/@jest/types/-/types-29.6.3.tgz", + "integrity": "sha512-u3UPsIilWKOM3F9CXtrG8LEJmNxwoCQC/XVj4IKYXvvpx7QIi/Kg1LI5uDmDpKlac62NUtX7eLjRh+jVZcLOzw==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "@types/istanbul-lib-coverage": "^2.0.0", + "@types/istanbul-reports": "^3.0.0", + "@types/node": "*", + "@types/yargs": "^17.0.8", + "chalk": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/@jridgewell/gen-mapping": { + "version": "0.3.5", + "resolved": "https://registry.npmjs.org/@jridgewell/gen-mapping/-/gen-mapping-0.3.5.tgz", + "integrity": "sha512-IzL8ZoEDIBRWEzlCcRhOaCupYyN5gdIK+Q6fbFdPDg6HqX6jpkItn7DFIpW9LQzXG6Df9sA7+OKnq0qlz/GaQg==", + "dev": true, + "dependencies": { + "@jridgewell/set-array": "^1.2.1", + "@jridgewell/sourcemap-codec": "^1.4.10", + "@jridgewell/trace-mapping": "^0.3.24" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/resolve-uri": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/@jridgewell/resolve-uri/-/resolve-uri-3.1.2.tgz", + "integrity": "sha512-bRISgCIjP20/tbWSPWMEi54QVPRZExkuD9lJL+UIxUKtwVJA8wW1Trb1jMs1RFXo1CBTNZ/5hpC9QvmKWdopKw==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/set-array": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/@jridgewell/set-array/-/set-array-1.2.1.tgz", + "integrity": "sha512-R8gLRTZeyp03ymzP/6Lil/28tGeGEzhx1q2k703KGWRAI1VdvPIXdG70VJc2pAMw3NA6JKL5hhFu1sJX0Mnn/A==", + "dev": true, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@jridgewell/sourcemap-codec": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@jridgewell/sourcemap-codec/-/sourcemap-codec-1.5.0.tgz", + "integrity": "sha512-gv3ZRaISU3fjPAgNsriBRqGWQL6quFx04YMPW/zD8XMLsU32mhCCbfbO6KZFLjvYpCZ8zyDEgqsgf+PwPaM7GQ==" + }, + "node_modules/@jridgewell/trace-mapping": { + "version": "0.3.25", + "resolved": "https://registry.npmjs.org/@jridgewell/trace-mapping/-/trace-mapping-0.3.25.tgz", + "integrity": "sha512-vNk6aEwybGtawWmy/PzwnGDOjCkLWSD2wqvjGGAgOAwCGWySYXfYoxt00IJkTF+8Lb57DwOb3Aa0o9CApepiYQ==", + "dev": true, + "dependencies": { + "@jridgewell/resolve-uri": "^3.1.0", + "@jridgewell/sourcemap-codec": "^1.4.14" + } + }, + "node_modules/@mapbox/geojson-area": { + "version": "0.2.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-area/-/geojson-area-0.2.2.tgz", + "integrity": "sha512-bBqqFn1kIbLBfn7Yq1PzzwVkPYQr9lVUeT8Dhd0NL5n76PBuXzOcuLV7GOSbEB1ia8qWxH4COCvFpziEu/yReA==", + "dependencies": { + "wgs84": "0.0.0" + } + }, + "node_modules/@mapbox/geojson-normalize": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-normalize/-/geojson-normalize-0.0.1.tgz", + "integrity": "sha512-82V7YHcle8lhgIGqEWwtXYN5cy0QM/OHq3ypGhQTbvHR57DF0vMHMjjVSQKFfVXBe/yWCBZTyOuzvK7DFFnx5Q==", + "bin": { + "geojson-normalize": "geojson-normalize" + } + }, + "node_modules/@mapbox/geojson-rewind": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/@mapbox/geojson-rewind/-/geojson-rewind-0.5.2.tgz", + "integrity": "sha512-tJaT+RbYGJYStt7wI3cq4Nl4SXxG8W7JDG5DMJu97V25RnbNg3QtQtf+KD+VLjNpWKYsRvXDNmNrBgEETr1ifA==", + "dependencies": { + "get-stream": "^6.0.1", + "minimist": "^1.2.6" + }, + "bin": { + "geojson-rewind": "geojson-rewind" + } + }, + "node_modules/@mapbox/jsonlint-lines-primitives": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/@mapbox/jsonlint-lines-primitives/-/jsonlint-lines-primitives-2.0.2.tgz", + "integrity": "sha512-rY0o9A5ECsTQRVhv7tL/OyDpGAoUB4tTvLiW1DSzQGq4bvTPhNw1VpSNjDJc5GFZ2XuyOtSWSVN05qOtcD71qQ==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/@mapbox/mapbox-gl-draw": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-draw/-/mapbox-gl-draw-1.5.0.tgz", + "integrity": "sha512-uchQbTa8wiv6GWWTbxW1g5b8H6VySz4t91SmduNH6jjWinPze7cjcmsPUEzhySXsYpYr2/50gRJLZz3bx7O88A==", + "dependencies": { + "@mapbox/geojson-area": "^0.2.2", + "@mapbox/geojson-normalize": "^0.0.1", + "@mapbox/point-geometry": "^1.1.0", + "fast-deep-equal": "^3.1.3", + "nanoid": "^5.0.9" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + } + }, + "node_modules/@mapbox/mapbox-gl-draw/node_modules/@mapbox/point-geometry": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-1.1.0.tgz", + "integrity": "sha512-YGcBz1cg4ATXDCM/71L9xveh4dynfGmcLDqufR+nQQy3fKwsAZsWd/x4621/6uJaeB9mwOHE6hPeDgXz9uViUQ==" + }, + "node_modules/@mapbox/mapbox-gl-draw/node_modules/nanoid": { + "version": "5.0.9", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-5.0.9.tgz", + "integrity": "sha512-Aooyr6MXU6HpvvWXKoVoXwKMs/KyVakWwg7xQfv5/S/RIgJMy0Ifa45H9qqYy7pTCszrHzP21Uk4PZq2HpEM8Q==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.js" + }, + "engines": { + "node": "^18 || >=20" + } + }, + "node_modules/@mapbox/mapbox-gl-supported": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/@mapbox/mapbox-gl-supported/-/mapbox-gl-supported-3.0.0.tgz", + "integrity": "sha512-2XghOwu16ZwPJLOFVuIOaLbN0iKMn867evzXFyf0P22dqugezfJwLmdanAgU25ITvz1TvOfVP4jsDImlDJzcWg==", + "dev": true + }, + "node_modules/@mapbox/point-geometry": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/point-geometry/-/point-geometry-0.1.0.tgz", + "integrity": "sha512-6j56HdLTwWGO0fJPlrZtdU/B13q8Uwmo18Ck2GnGgN9PCFyKTZ3UbXeEdRFh18i9XQ92eH2VdtpJHpBD3aripQ==" + }, + "node_modules/@mapbox/tiny-sdf": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@mapbox/tiny-sdf/-/tiny-sdf-2.0.6.tgz", + "integrity": "sha512-qMqa27TLw+ZQz5Jk+RcwZGH7BQf5G/TrutJhspsca/3SHwmgKQ1iq+d3Jxz5oysPVYTGP6aXxCo5Lk9Er6YBAA==" + }, + "node_modules/@mapbox/unitbezier": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/@mapbox/unitbezier/-/unitbezier-0.0.1.tgz", + "integrity": "sha512-nMkuDXFv60aBr9soUG5q+GvZYL+2KZHVvsqFCzqnkGEf46U2fvmytHaEVc1/YZbiLn8X+eR3QzX1+dwDO1lxlw==" + }, + "node_modules/@mapbox/vector-tile": { + "version": "1.3.1", + "resolved": "https://registry.npmjs.org/@mapbox/vector-tile/-/vector-tile-1.3.1.tgz", + "integrity": "sha512-MCEddb8u44/xfQ3oD+Srl/tNcQoqTw3goGk2oLsrFxOTc3dUp+kAnby3PvAeeBYSMSjSPD1nd1AJA6W49WnoUw==", + "dependencies": { + "@mapbox/point-geometry": "~0.1.0" + } + }, + "node_modules/@mapbox/whoots-js": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@mapbox/whoots-js/-/whoots-js-3.1.0.tgz", + "integrity": "sha512-Es6WcD0nO5l+2BOQS4uLfNPYQaNDfbot3X1XUoloz+x0mPDS3eeORZJl06HXjwBG1fOGwCRnzK88LMdxKRrd6Q==", + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/@maplibre/maplibre-gl-style-spec": { + "version": "20.3.1", + "resolved": "https://registry.npmjs.org/@maplibre/maplibre-gl-style-spec/-/maplibre-gl-style-spec-20.3.1.tgz", + "integrity": "sha512-5ueL4UDitzVtceQ8J4kY+Px3WK+eZTsmGwha3MBKHKqiHvKrjWWwBCIl1K8BuJSc5OFh83uI8IFNoFvQxX2uUw==", + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "~2.0.2", + "@mapbox/unitbezier": "^0.0.1", + "json-stringify-pretty-compact": "^4.0.0", + "minimist": "^1.2.8", + "quickselect": "^2.0.0", + "rw": "^1.3.3", + "sort-object": "^3.0.3", + "tinyqueue": "^3.0.0" + }, + "bin": { + "gl-style-format": "dist/gl-style-format.mjs", + "gl-style-migrate": "dist/gl-style-migrate.mjs", + "gl-style-validate": "dist/gl-style-validate.mjs" + } + }, + "node_modules/@maplibre/maplibre-gl-style-spec/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "node_modules/@mdi/font": { + "version": "7.4.47", + "resolved": "https://registry.npmjs.org/@mdi/font/-/font-7.4.47.tgz", + "integrity": "sha512-43MtGpd585SNzHZPcYowu/84Vz2a2g31TvPMTm9uTiCSWzaheQySUcSyUH/46fPnuPQWof2yd0pGBtzee/IQWw==" + }, + "node_modules/@nodelib/fs.scandir": { + "version": "2.1.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.scandir/-/fs.scandir-2.1.5.tgz", + "integrity": "sha512-vq24Bq3ym5HEQm2NKCr3yXDwjc7vTsEThRDnkp2DK9p1uqLR+DHurm/NOTo0KG7HYHU7eppKZj3MyqYuMBf62g==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "2.0.5", + "run-parallel": "^1.1.9" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.stat": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/@nodelib/fs.stat/-/fs.stat-2.0.5.tgz", + "integrity": "sha512-RkhPPp2zrqDAQA/2jNhnztcPAlv64XdhIp7a7454A5ovI7Bukxgt7MX7udwAu3zg1DcpPU0rz3VV1SeaqvY4+A==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nodelib/fs.walk": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/@nodelib/fs.walk/-/fs.walk-1.2.8.tgz", + "integrity": "sha512-oGB+UxlgWcgQkgwo8GcEGwemoTFt3FIO9ababBmaGwXIoBKZ+GTy0pP185beGg7Llih/NSHSV2XAs1lnznocSg==", + "dev": true, + "dependencies": { + "@nodelib/fs.scandir": "2.1.5", + "fastq": "^1.6.0" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/@nolyfill/is-core-module": { + "version": "1.0.39", + "resolved": "https://registry.npmjs.org/@nolyfill/is-core-module/-/is-core-module-1.0.39.tgz", + "integrity": "sha512-nn5ozdjYQpUCZlWGuxcJY/KpxkWQs4DcbMCmKojjyrYDEAGy4Ce19NN4v5MduafTwJlbKc99UA8YhSVqq9yPZA==", + "dev": true, + "engines": { + "node": ">=12.4.0" + } + }, + "node_modules/@openid/appauth": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@openid/appauth/-/appauth-1.3.2.tgz", + "integrity": "sha512-NoOejniaqzOEbHg3RcBZtTriYqhqpQFgTC4lDNaRbgRCnpz6n8PlxWlCbh2N1K5qKawfxRP29/Wiho3FrXQ3Qw==", + "dependencies": { + "@types/base64-js": "^1.3.2", + "@types/jquery": "^3.5.29", + "base64-js": "^1.5.1", + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "opener": "^1.5.2" + } + }, + "node_modules/@rollup/rollup-android-arm-eabi": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm-eabi/-/rollup-android-arm-eabi-4.28.1.tgz", + "integrity": "sha512-2aZp8AES04KI2dy3Ss6/MDjXbwBzj+i0GqKtWXgw2/Ma6E4jJvujryO6gJAghIRVz7Vwr9Gtl/8na3nDUKpraQ==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-android-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-android-arm64/-/rollup-android-arm64-4.28.1.tgz", + "integrity": "sha512-EbkK285O+1YMrg57xVA+Dp0tDBRB93/BZKph9XhMjezf6F4TpYjaUSuPt5J0fZXlSag0LmZAsTmdGGqPp4pQFA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "android" + ] + }, + "node_modules/@rollup/rollup-darwin-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-arm64/-/rollup-darwin-arm64-4.28.1.tgz", + "integrity": "sha512-prduvrMKU6NzMq6nxzQw445zXgaDBbMQvmKSJaxpaZ5R1QDM8w+eGxo6Y/jhT/cLoCvnZI42oEqf9KQNYz1fqQ==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-darwin-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-darwin-x64/-/rollup-darwin-x64-4.28.1.tgz", + "integrity": "sha512-WsvbOunsUk0wccO/TV4o7IKgloJ942hVFK1CLatwv6TJspcCZb9umQkPdvB7FihmdxgaKR5JyxDjWpCOp4uZlQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "darwin" + ] + }, + "node_modules/@rollup/rollup-freebsd-arm64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-arm64/-/rollup-freebsd-arm64-4.28.1.tgz", + "integrity": "sha512-HTDPdY1caUcU4qK23FeeGxCdJF64cKkqajU0iBnTVxS8F7H/7BewvYoG+va1KPSL63kQ1PGNyiwKOfReavzvNA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-freebsd-x64": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-freebsd-x64/-/rollup-freebsd-x64-4.28.1.tgz", + "integrity": "sha512-m/uYasxkUevcFTeRSM9TeLyPe2QDuqtjkeoTpP9SW0XxUWfcYrGDMkO/m2tTw+4NMAF9P2fU3Mw4ahNvo7QmsQ==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "freebsd" + ] + }, + "node_modules/@rollup/rollup-linux-arm-gnueabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-gnueabihf/-/rollup-linux-arm-gnueabihf-4.28.1.tgz", + "integrity": "sha512-QAg11ZIt6mcmzpNE6JZBpKfJaKkqTm1A9+y9O+frdZJEuhQxiugM05gnCWiANHj4RmbgeVJpTdmKRmH/a+0QbA==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm-musleabihf": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm-musleabihf/-/rollup-linux-arm-musleabihf-4.28.1.tgz", + "integrity": "sha512-dRP9PEBfolq1dmMcFqbEPSd9VlRuVWEGSmbxVEfiq2cs2jlZAl0YNxFzAQS2OrQmsLBLAATDMb3Z6MFv5vOcXg==", + "cpu": [ + "arm" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-gnu/-/rollup-linux-arm64-gnu-4.28.1.tgz", + "integrity": "sha512-uGr8khxO+CKT4XU8ZUH1TTEUtlktK6Kgtv0+6bIFSeiSlnGJHG1tSFSjm41uQ9sAO/5ULx9mWOz70jYLyv1QkA==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-arm64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-arm64-musl/-/rollup-linux-arm64-musl-4.28.1.tgz", + "integrity": "sha512-QF54q8MYGAqMLrX2t7tNpi01nvq5RI59UBNx+3+37zoKX5KViPo/gk2QLhsuqok05sSCRluj0D00LzCwBikb0A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-loongarch64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-loongarch64-gnu/-/rollup-linux-loongarch64-gnu-4.28.1.tgz", + "integrity": "sha512-vPul4uodvWvLhRco2w0GcyZcdyBfpfDRgNKU+p35AWEbJ/HPs1tOUrkSueVbBS0RQHAf/A+nNtDpvw95PeVKOA==", + "cpu": [ + "loong64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-powerpc64le-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-powerpc64le-gnu/-/rollup-linux-powerpc64le-gnu-4.28.1.tgz", + "integrity": "sha512-pTnTdBuC2+pt1Rmm2SV7JWRqzhYpEILML4PKODqLz+C7Ou2apEV52h19CR7es+u04KlqplggmN9sqZlekg3R1A==", + "cpu": [ + "ppc64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-riscv64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-riscv64-gnu/-/rollup-linux-riscv64-gnu-4.28.1.tgz", + "integrity": "sha512-vWXy1Nfg7TPBSuAncfInmAI/WZDd5vOklyLJDdIRKABcZWojNDY0NJwruY2AcnCLnRJKSaBgf/GiJfauu8cQZA==", + "cpu": [ + "riscv64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-s390x-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-s390x-gnu/-/rollup-linux-s390x-gnu-4.28.1.tgz", + "integrity": "sha512-/yqC2Y53oZjb0yz8PVuGOQQNOTwxcizudunl/tFs1aLvObTclTwZ0JhXF2XcPT/zuaymemCDSuuUPXJJyqeDOg==", + "cpu": [ + "s390x" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-gnu": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-gnu/-/rollup-linux-x64-gnu-4.28.1.tgz", + "integrity": "sha512-fzgeABz7rrAlKYB0y2kSEiURrI0691CSL0+KXwKwhxvj92VULEDQLpBYLHpF49MSiPG4sq5CK3qHMnb9tlCjBw==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-linux-x64-musl": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-linux-x64-musl/-/rollup-linux-x64-musl-4.28.1.tgz", + "integrity": "sha512-xQTDVzSGiMlSshpJCtudbWyRfLaNiVPXt1WgdWTwWz9n0U12cI2ZVtWe/Jgwyv/6wjL7b66uu61Vg0POWVfz4g==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "linux" + ] + }, + "node_modules/@rollup/rollup-win32-arm64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-arm64-msvc/-/rollup-win32-arm64-msvc-4.28.1.tgz", + "integrity": "sha512-wSXmDRVupJstFP7elGMgv+2HqXelQhuNf+IS4V+nUpNVi/GUiBgDmfwD0UGN3pcAnWsgKG3I52wMOBnk1VHr/A==", + "cpu": [ + "arm64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-ia32-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-ia32-msvc/-/rollup-win32-ia32-msvc-4.28.1.tgz", + "integrity": "sha512-ZkyTJ/9vkgrE/Rk9vhMXhf8l9D+eAhbAVbsGsXKy2ohmJaWg0LPQLnIxRdRp/bKyr8tXuPlXhIoGlEB5XpJnGA==", + "cpu": [ + "ia32" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rollup/rollup-win32-x64-msvc": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/@rollup/rollup-win32-x64-msvc/-/rollup-win32-x64-msvc-4.28.1.tgz", + "integrity": "sha512-ZvK2jBafvttJjoIdKm/Q/Bh7IJ1Ose9IBOwpOXcOvW3ikGTQGmKDgxTC6oCAzW6PynbkKP8+um1du81XJHZ0JA==", + "cpu": [ + "x64" + ], + "optional": true, + "os": [ + "win32" + ] + }, + "node_modules/@rtsao/scc": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/@rtsao/scc/-/scc-1.1.0.tgz", + "integrity": "sha512-zt6OdqaDoOnJ1ZYsCYGt9YmWzDXl4vQdKTyJev62gFhRGKdx7mcT54V9KIjg+d2wi9EXsPvAPKe7i7WjfVWB8g==", + "dev": true + }, + "node_modules/@sinclair/typebox": { + "version": "0.27.8", + "resolved": "https://registry.npmjs.org/@sinclair/typebox/-/typebox-0.27.8.tgz", + "integrity": "sha512-+Fj43pSMwJs4KRrH/938Uf+uAELIgVBmQzg/q1YG10djyfA3TnrU8N8XzqCh/okZdszqBQTZf96idMfE5lnwTA==", + "dev": true + }, + "node_modules/@sinonjs/commons": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/@sinonjs/commons/-/commons-3.0.1.tgz", + "integrity": "sha512-K3mCHKQ9sVh8o1C9cxkwxaOmXoAMlDxC1mYyHrjqOWEcBjYr76t96zL2zlj5dUGZ3HSw240X1qgH3Mjf1yJWpQ==", + "dev": true, + "dependencies": { + "type-detect": "4.0.8" + } + }, + "node_modules/@sinonjs/fake-timers": { + "version": "10.3.0", + "resolved": "https://registry.npmjs.org/@sinonjs/fake-timers/-/fake-timers-10.3.0.tgz", + "integrity": "sha512-V4BG07kuYSUkTCSBHG8G8TNhM+F19jXFWnQtzj+we8DrkpSBCee9Z3Ms8yiGer/dlmhe35/Xdgyo3/0rQKg7YA==", + "dev": true, + "dependencies": { + "@sinonjs/commons": "^3.0.0" + } + }, + "node_modules/@turf/along": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/along/-/along-7.1.0.tgz", + "integrity": "sha512-WLgBZJ/B6CcASF6WL7M+COtHlVP0hBrMbrtKyF7KBlicwRuijJZXDtEQA5oLgr+k1b2HqGN+UqH2A0/E719enQ==", + "dependencies": { + "@turf/bearing": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/angle": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/angle/-/angle-7.1.0.tgz", + "integrity": "sha512-YMHEV/YrARsWgWoQuXEWrQMsvB8z67nTMw2eiLZ883V7jwkhWQGvCW6W+/mGgsWQdHppjCZNcKryryhD2GRWVA==", + "dependencies": { + "@turf/bearing": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/rhumb-bearing": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/area": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/area/-/area-7.1.0.tgz", + "integrity": "sha512-w91FEe02/mQfMPRX2pXua48scFuKJ2dSVMF2XmJ6+BJfFiCPxp95I3+Org8+ZsYv93CDNKbf0oLNEPnuQdgs2g==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox/-/bbox-7.1.0.tgz", + "integrity": "sha512-PdWPz9tW86PD78vSZj2fiRaB8JhUHy6piSa/QXb83lucxPK+HTAdzlDQMTKj5okRCU8Ox/25IR2ep9T8NdopRA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-clip": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-clip/-/bbox-clip-7.1.0.tgz", + "integrity": "sha512-PhZubKCzF/afwStUzODqOJluiCbCw244lCtVhXA9F+Pgkhvk8KvbFdgpPquOZ45OwuktrchSB28BrBkSBiadHw==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bbox-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bbox-polygon/-/bbox-polygon-7.1.0.tgz", + "integrity": "sha512-fvZB09ErCZOVlWVDop836hmpKaGUmfXnR9naMhS73A/8nn4M3hELbQtMv2R8gXj7UakXCuxS/i9erdpDFZ2O+g==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bearing": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bearing/-/bearing-7.1.0.tgz", + "integrity": "sha512-X5lackrZ6FW+YhgjWxwVFRgWD1j4xm4t5VvE6EE6v/1PVaHQ5OCjf6u1oaLx5LSG+gaHUhjTlAHrn9MYPFaeTA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/bezier-spline": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/bezier-spline/-/bezier-spline-7.1.0.tgz", + "integrity": "sha512-bhBY70bcVYJEosuW7B/TFtnE5rmPTTpxmJvljhGC0eyM84oNVv7apDBuseb5KdlTOOBIvdD9nIE4qV8lmplp6w==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-clockwise": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-clockwise/-/boolean-clockwise-7.1.0.tgz", + "integrity": "sha512-H5DYno+gHwZx+VaiC8DUBZXZQlxYecdSvqCfCACWi1uMsKvlht/O+xy65hz2P57lk2smlcV+1ETFVxJlEZduYg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-concave": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-concave/-/boolean-concave-7.1.0.tgz", + "integrity": "sha512-IFCN25DI+hvngxIsv4+MPuRJQRl/Lz/xnZgpH82leCn4Jqn5wW7KqKFMz7G4GoKK+93cK5/6ioAxY7hVWBXxJw==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-contains": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-contains/-/boolean-contains-7.1.0.tgz", + "integrity": "sha512-ldy4j1/RVChYTYjEb4wWaE/JyF1jA87WpsB4eVLic6OcAYJGs7POF1kfKbcdkJJiRBmhI3CXNA+u+m9y4Z/j3g==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/boolean-point-on-line": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-crosses": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-crosses/-/boolean-crosses-7.1.0.tgz", + "integrity": "sha512-LK8UM3AENycuGinLCDaL0QSznGMnD0XsjFDGnY4KehshiL5Zd8ZsPyKmHOPygUJT9DWeH69iLx459lOc+5Vj2w==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@turf/polygon-to-line": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-disjoint": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-disjoint/-/boolean-disjoint-7.1.0.tgz", + "integrity": "sha512-JapOG03kOCoGeYMWgTQjEifhr1nUoK4Os2cX0iC5X9kvZF4qCHeruX8/rffBQDx7PDKQKusSTXq8B1ISFi0hOw==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/polygon-to-line": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-equal": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-equal/-/boolean-equal-7.1.0.tgz", + "integrity": "sha512-deghtFMApc7fNsdXtZdgYR4gsU+TVfowcv666nrvZbPPsXL6NTYGBhDFmYXsJ8gPTCGT9uT0WXppdgT8diWOxA==", + "dependencies": { + "@turf/clean-coords": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-intersects": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-intersects/-/boolean-intersects-7.1.0.tgz", + "integrity": "sha512-gpksWbb0RT+Z3nfqRfoACY3KEFyv2BPaxJ3L76PH67DhHZviq3Nfg85KYbpuhS64FSm+9tXe4IaKn6EjbHo20g==", + "dependencies": { + "@turf/boolean-disjoint": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-overlap": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-overlap/-/boolean-overlap-7.1.0.tgz", + "integrity": "sha512-mJRN0X8JiPm8eDZk5sLvIrsP03A2GId6ijx4VgSE1AvHwV6qB561KlUbWxga2AScocIfv/y/qd2OCs+/TQSZcg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@turf/line-overlap": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "geojson-equality-ts": "^1.0.2", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-parallel": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-parallel/-/boolean-parallel-7.1.0.tgz", + "integrity": "sha512-tA84Oux0X91CxUc6c/lZph5W9wUZGNT4fxFOg5Gp1IMTSwtxSYL1LMvKsr/VmMnwdOUkNcqAgU06+t4wBLtDfg==", + "dependencies": { + "@turf/clean-coords": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/line-segment": "^7.1.0", + "@turf/rhumb-bearing": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-in-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-in-polygon/-/boolean-point-in-polygon-7.1.0.tgz", + "integrity": "sha512-mprVsyIQ+ijWTZwbnO4Jhxu94ZW2M2CheqLiRTsGJy0Ooay9v6Av5/Nl3/Gst7ZVXxPqMeMaFYkSzcTc87AKew==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "point-in-polygon-hao": "^1.1.0", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-point-on-line": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-point-on-line/-/boolean-point-on-line-7.1.0.tgz", + "integrity": "sha512-Kd83EjeTyY4kVMAhcW3Lb8aChwh24BUIhmpE9Or8M+ETNsFGzn9M7qtIySJHLRzKAL3letvWSKXKQPuK1AhAzg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-touches": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-touches/-/boolean-touches-7.1.0.tgz", + "integrity": "sha512-qN4LCs3RfVtNAAdn5GpsUFBqoZyAaK9UzSnGSh67GP9sy5M8MEHwM/HAJ5zGWJqQADrczI3U6BRWGLcGfGSz3Q==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/boolean-point-on-line": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-valid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-valid/-/boolean-valid-7.1.0.tgz", + "integrity": "sha512-zq1QCfQEyn+piHlvxxDifjmsJn2xl53i4mnKFYdMQI/i09XiX+Fi/MVM3i2hf3D5AsEPsud8Tk7C7rWNCm4nVw==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/boolean-crosses": "^7.1.0", + "@turf/boolean-disjoint": "^7.1.0", + "@turf/boolean-overlap": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/boolean-point-on-line": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@types/geojson": "^7946.0.10", + "geojson-polygon-self-intersections": "^1.2.1", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/boolean-within": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/boolean-within/-/boolean-within-7.1.0.tgz", + "integrity": "sha512-pgXgKCzYHssADQ1nClB1Q9aWI/dE1elm2jy3B5X59XdoFXKrKDZA+gCHYOYgp2NGO/txzVfl3UKvnxIj54Fa4w==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/boolean-point-on-line": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/buffer": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/buffer/-/buffer-7.1.0.tgz", + "integrity": "sha512-QM3JiCMYA19k5ouO8wJtvICX3Y8XntxVpDfHSKhFFidZcCkMTR2PWWOpwS6EoL3t75rSKw/FOLIPLZGtIu963w==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/center": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/jsts": "^2.7.1", + "@turf/meta": "^7.1.0", + "@turf/projection": "^7.1.0", + "@types/geojson": "^7946.0.10", + "d3-geo": "1.7.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/buffer/node_modules/d3-array": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-1.2.4.tgz", + "integrity": "sha512-KHW6M86R+FUPYGb3R5XiYjXPq7VzwxZ22buHhAEVG5ztoEcZZMLov530mmccaqA1GghZArjQV46fuc8kUqhhHw==" + }, + "node_modules/@turf/buffer/node_modules/d3-geo": { + "version": "1.7.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-1.7.1.tgz", + "integrity": "sha512-O4AempWAr+P5qbk2bC2FuN/sDW4z+dN2wDf9QV3bxQt4M5HfOEeXLgJ/UKQW0+o1Dj8BE+L5kiDbdWUMjsmQpw==", + "dependencies": { + "d3-array": "1" + } + }, + "node_modules/@turf/center": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/center/-/center-7.1.0.tgz", + "integrity": "sha512-p9AvBMwNZmRg65kU27cGKHAUQnEcdz8Y7f/i5DvaMfm4e8zmawr+hzPKXaUpUfiTyLs8Xt2W9vlOmNGyH+6X3w==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-mean": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/center-mean/-/center-mean-7.1.0.tgz", + "integrity": "sha512-NQZB1LUVsyAD+p0+D4huzX2XVnfVx1yEEI9EX602THmi+g+nkge4SK9OMV11ov/Tv8JJ6aVNVPo/cy1vm/LCIQ==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-median": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/center-median/-/center-median-7.1.0.tgz", + "integrity": "sha512-jx4/Ql5+v41Cd0J/gseNCUbLTzWUT2LUaiXn8eFWDrvmEgqHIx7KJcGcJd5HzV+9zJwng4AXxyh5NMvUR0NjwA==", + "dependencies": { + "@turf/center-mean": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/center-of-mass": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/center-of-mass/-/center-of-mass-7.1.0.tgz", + "integrity": "sha512-j38oBlj7LBoCjZbrIo8EoHVGhk7UQmMLQ1fe8ZPAF9pd05XEL1qxyHKZKdQ/deGISiaEhXCyfLNrKAHAuy25RA==", + "dependencies": { + "@turf/centroid": "^7.1.0", + "@turf/convex": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/centroid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/centroid/-/centroid-7.1.0.tgz", + "integrity": "sha512-1Y1b2l+ZB1CZ+ITjUCsGqC4/tSjwm/R4OUfDztVqyyCq/VvezkLmTNqvXTGXgfP0GXkpv68iCfxF5M7QdM5pJQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/circle": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/circle/-/circle-7.1.0.tgz", + "integrity": "sha512-6qhF1drjwH0Dg3ZB9om1JkWTJfAqBcbtIrAj5UPlrAeHP87hGoCO2ZEsFEAL9Q18vntpivT89Uho/nqQUjJhYw==", + "dependencies": { + "@turf/destination": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clean-coords": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clean-coords/-/clean-coords-7.1.0.tgz", + "integrity": "sha512-q1U8UbRVL5cRdwOlNjD8mad8pWjFGe0s4ihg1pSiVNq7i47WASJ3k20yZiUFvuAkyNjV0rZ/A7Jd7WzjcierFg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clone": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clone/-/clone-7.1.0.tgz", + "integrity": "sha512-5R9qeWvL7FDdBIbEemd0eCzOStr09oburDvJ1hRiPCFX6rPgzcZBQ0gDmZzoF4AFcNLb5IwknbLZjVLaUGWtFA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clusters/-/clusters-7.1.0.tgz", + "integrity": "sha512-7CY3Ai+5V6q2O9/IgqLpJQrmrTy7aUJjTW1iRan8Tz3WixvxyJHeS3iyRy8Oc0046chQIaHLtyTgKVt2QdsPSA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters-dbscan": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-dbscan/-/clusters-dbscan-7.1.0.tgz", + "integrity": "sha512-BmrBTOEaKN5FIED6b3yb3V3ejfK0A2Q3pT9/ji3mcRLJiBaRGeiN5V6gtGXe7PeMYdoqhHykU5Ye2uUtREWRdQ==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/clusters-kmeans": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/clusters-kmeans/-/clusters-kmeans-7.1.0.tgz", + "integrity": "sha512-M8cCqR6iE1jDSUF/UU9QdPUFrobZS2fo59TfF1IRHZ2G1EjbcK4GzZcUfmQS6DZraGudYutpMYIuNdm1dPMqdQ==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "skmeans": "0.9.7", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/collect": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/collect/-/collect-7.1.0.tgz", + "integrity": "sha512-6indMWLiKeBh4AsioNeFeFnO0k9U5CBsWAFEje6tOEFI4c+P7LF9mNA9z91H8KkrhegR9XNO5Vm2rmdY63aYXw==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/combine": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/combine/-/combine-7.1.0.tgz", + "integrity": "sha512-Xl7bGKKjgzIq2T/IemS6qnIykyuxU6cMxKtz+qLeWJGoNww/BllwxXePSV+dWRPXZTFFj96KIhBXAW0aUjAQKQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/concave": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/concave/-/concave-7.1.0.tgz", + "integrity": "sha512-aSid53gYRee4Tjc4pfeI3KI+RoBUnL/hRMilxIPduagTgZZS+cvvk01OQWBKm5UTVfHRGuy0XIqnK8y9RFinDQ==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/tin": "^7.1.0", + "@types/geojson": "^7946.0.10", + "topojson-client": "3.x", + "topojson-server": "3.x", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/convex": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/convex/-/convex-7.1.0.tgz", + "integrity": "sha512-w9fUMZYE36bLrEWEj7L7aVMCB7NBtr2o8G+avRvUIwF4DPqbtcjlcZE9EEBfq44uYdn+/Pke6Iq42T/zyD/cpg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "concaveman": "^1.2.1", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/destination": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/destination/-/destination-7.1.0.tgz", + "integrity": "sha512-97XuvB0iaAiMg86hrnZ529WwP44TQAA9mmI5PMlchACiA4LFrEtWjjDzvO6234coieoqhrw6dZYcJvd5O2PwrQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/difference": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/difference/-/difference-7.1.0.tgz", + "integrity": "sha512-+JVzdskICQ8ULKQ9CpWUM5kBvoXxN4CO78Ez/Ki3/7NXl7+HM/nb12B0OyM8hkJchpb8TsOi0YwyJiKMqEpTBA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "polygon-clipping": "^0.15.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/dissolve": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/dissolve/-/dissolve-7.1.0.tgz", + "integrity": "sha512-fyOnCSYVUZ8SF9kt9ROnQYlkJTE0hpWSoWwbMZQCAR7oVZVPiuPq7eIbzTP+k5jzEAnofsqoGs5qVDTjHcWMiw==", + "dependencies": { + "@turf/flatten": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "polygon-clipping": "^0.15.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/distance/-/distance-7.1.0.tgz", + "integrity": "sha512-hhNHhxCHB3ddzAGCNY4BtE29OZh+DAJPvUapQz+wOjISnlwvMcwLKvslgHWSYF536QDVe/93FEU2q67+CsZTPA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/distance-weight": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/distance-weight/-/distance-weight-7.1.0.tgz", + "integrity": "sha512-8m6s4y8Yyt6r3itf44yAJjXC+62UkrkhOpskIfaE0lHcBcvZz9wjboHoBf3bS4l/42E4StcanbFZdjOpODAdZw==", + "dependencies": { + "@turf/centroid": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/ellipse": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/ellipse/-/ellipse-7.1.0.tgz", + "integrity": "sha512-AfOahUmStDExWGPg8ZWxxkgom+fdJs7Mn9DzZH+fV/uZ+je1bLQpbPCUu9/ev6u/HhbYGl4VAL/CeQzjOyy6LQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/rhumb-destination": "^7.1.0", + "@turf/transform-rotate": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/envelope": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/envelope/-/envelope-7.1.0.tgz", + "integrity": "sha512-WeLQse9wuxsxhzSqrJA6Ha7rLWnLKgdKY9cfxmJKHSpgqcJyNk60m7+T3UpI/nkGwpfbpeyB3EGC1EWPbxiDUg==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/bbox-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/explode": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/explode/-/explode-7.1.0.tgz", + "integrity": "sha512-To+GUbU6HtcHZ8S0w/dw1EbdQIOCXALTr6Ug5/IFg8hIBMJelDpVr3Smwy8uqhDRFinY2eprBwQnDPcd10eCqA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flatten": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/flatten/-/flatten-7.1.0.tgz", + "integrity": "sha512-Kb23pqEarcLsdBqnQcK0qTrSMiWNTVb9tOFrNlZc66DIhDLAdpOKG4eqk00CMoUzWTixlnawDgJRqcStRrR4WA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/flip": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/flip/-/flip-7.1.0.tgz", + "integrity": "sha512-vac73W8WblzzNFanzWYLBzWDIcqc5xczOrtEO07RDEiKEI3Heo0471Jed3v9W506uuOX6/HAiCjXbRjTLjiLfw==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/geojson-rbush": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/geojson-rbush/-/geojson-rbush-7.1.0.tgz", + "integrity": "sha512-j1C7Ohlxa1z644bNOpgibcFGaDLgLXGLOzwF1tfQaP5y7E4PJQUXL0DWIgNb3Ke7gZC05LPHM25a5TRReUfFBQ==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/great-circle": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/great-circle/-/great-circle-7.1.0.tgz", + "integrity": "sha512-92q5fqUp5oW+FYekUIrUVR5PZBWbOV6NHKHPIiNahiPvtkpZItbbjoO+tGn5+2i8mxZP9FGOthayJe4V0a1xkg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/helpers": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/helpers/-/helpers-7.1.0.tgz", + "integrity": "sha512-dTeILEUVeNbaEeoZUOhxH5auv7WWlOShbx7QSd4s0T4Z0/iz90z9yaVCtZOLbU89umKotwKaJQltBNO9CzVgaQ==", + "dependencies": { + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/hex-grid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/hex-grid/-/hex-grid-7.1.0.tgz", + "integrity": "sha512-I+Apx0smOPkMzaS5HHL44YOxSkSUvrz+wtSIETsDFWWLT2xKNkaaEcYU5MkgSoEfQsj082M7EkOIIpocXlA3kg==", + "dependencies": { + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/intersect": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/interpolate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/interpolate/-/interpolate-7.1.0.tgz", + "integrity": "sha512-VWec1OW9gHZLPS3yYkUXAHKMGQuYO4aqh8WCltT7Ym4efrKqkSOE5T+mBqO68QgcL8nY4kiNa8lxwXd0SfXDSA==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/hex-grid": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/point-grid": "^7.1.0", + "@turf/square-grid": "^7.1.0", + "@turf/triangle-grid": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/intersect": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/intersect/-/intersect-7.1.0.tgz", + "integrity": "sha512-T0VhI6yhptX9EoMsuuBETyqV+edyq31SUC8bfuM6kdJ5WwJ0EvUfQoC+3bhMtCOn60lHawrUuGBgW+vCO8KGMg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "polygon-clipping": "^0.15.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/invariant": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/invariant/-/invariant-7.1.0.tgz", + "integrity": "sha512-OCLNqkItBYIP1nE9lJGuIUatWGtQ4rhBKAyTfFu0z8npVzGEYzvguEeof8/6LkKmTTEHW53tCjoEhSSzdRh08Q==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/isobands": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/isobands/-/isobands-7.1.0.tgz", + "integrity": "sha512-iMLTOP/K5C05AttF4N1WeV+KrY4O5VWW/abO0N86XCWh1OeqmIUgqIBKEmhDzttAqC0UK2YrUfj0lI1Ez1fYZQ==", + "dependencies": { + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/explode": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "marchingsquares": "^1.3.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/isolines": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/isolines/-/isolines-7.1.0.tgz", + "integrity": "sha512-V6QTHXBT5ZsL3s9ZVBJgHYtz3gCFKqNnQLysNE02LE0fVVqaSao3sFrcpghmdDxf0hBCDK8lZVvyRGO6o32LHQ==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "marchingsquares": "^1.3.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/jsts": { + "version": "2.7.2", + "resolved": "https://registry.npmjs.org/@turf/jsts/-/jsts-2.7.2.tgz", + "integrity": "sha512-zAezGlwWHPyU0zxwcX2wQY3RkRpwuoBmhhNE9HY9kWhFDkCxZ3aWK5URKwa/SWKJbj9aztO+8vtdiBA28KVJFg==", + "dependencies": { + "jsts": "2.7.1" + } + }, + "node_modules/@turf/kinks": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/kinks/-/kinks-7.1.0.tgz", + "integrity": "sha512-KKLYUsyJPU17fODwA81mhHzFYGQYocdbk9NxDPCcdRHvxzM8t95lptkGx/2k/9rXBs1DK7NmyzI4m7zDO0DK7g==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/length": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/length/-/length-7.1.0.tgz", + "integrity": "sha512-wUJj9WLKEudG1ngNao2ZwD+Dt6UkvWIbubuJ6lR6FndFDL3iezFhNGy0IXS+0xH9kXi2apiTnM9Vk5+i8BTEvQ==", + "dependencies": { + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-arc": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-arc/-/line-arc-7.1.0.tgz", + "integrity": "sha512-9/bM34PozTyJ5FXXPAzl/j0RpcTImgMFJZ0WhH0pZZEZRum6P0rJnENt2E2qI441zeozQ9H6X5DCiJogDmRUEw==", + "dependencies": { + "@turf/circle": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-chunk": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-chunk/-/line-chunk-7.1.0.tgz", + "integrity": "sha512-1lIUfqAQvCWAuUNC2ip8UYmM5kDltXOidLPW45Ee1OAIKYGBeFNtjwnxc0mQ40tnfTXclTYLDdOOP9LShspT9w==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/length": "^7.1.0", + "@turf/line-slice-along": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-intersect": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-intersect/-/line-intersect-7.1.0.tgz", + "integrity": "sha512-JI3dvOsAoCqd4vUJ134FIzgcC42QpC/tBs+b4OJoxWmwDek3REv4qGaZY6wCg9X4hFSlCKFcnhMIQQZ/n720Qg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "sweepline-intersections": "^1.5.0", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-offset": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-offset/-/line-offset-7.1.0.tgz", + "integrity": "sha512-pz6irzhiQlJurU7DoXada6k3ei7PzY+VpsE/Wotm0D2KEAnoxqum2WK0rqqrhKPHKn+xpUGsHN9W/6K+qtmaHg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-overlap": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-overlap/-/line-overlap-7.1.0.tgz", + "integrity": "sha512-BdHuEoFAtqvVw3LkjCdivG035nfuwZuxji2ijst+mkmDnlv7uwSBudJqcDGjU6up2r8P1mXChS4im4xjUz+lwg==", + "dependencies": { + "@turf/boolean-point-on-line": "^7.1.0", + "@turf/geojson-rbush": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-segment": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/nearest-point-on-line": "^7.1.0", + "@types/geojson": "^7946.0.10", + "fast-deep-equal": "^3.1.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-segment": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-segment/-/line-segment-7.1.0.tgz", + "integrity": "sha512-9rgIIH6ZzC3IiWxDQtKsq+j6eu8fRinMkJeusfI9HqOTm4vO02Ll4F/FigjOMOO/6X3TJ+Pqe3gS99TUaBINkw==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-slice": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-slice/-/line-slice-7.1.0.tgz", + "integrity": "sha512-44xcjgMQxTa7tTAZlSD3t1cFjHi5SCfAqjg1ONv45EYKsQSonPaxD7LGzCbU5pR2RJjx3R7QRJx2G88hnGcXjQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/nearest-point-on-line": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-slice-along": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-slice-along/-/line-slice-along-7.1.0.tgz", + "integrity": "sha512-UwfnFORZnu4xdnuRXiQM3ODa8f9Q0FBjQF/XHNsPEI/xxmnwgQj3MZiULbAeHUbtU/7psTC7gEjfE3Lf0tcKQw==", + "dependencies": { + "@turf/bearing": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-split": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-split/-/line-split-7.1.0.tgz", + "integrity": "sha512-QqUAmtlrnEu75cpLOmpEuiYU63BeVwpSKOBllBbu5gkP+7H/WBM/9fh7J0VgHNFHzqZCKiu8v4158k+CZr0QAg==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/geojson-rbush": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@turf/line-segment": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/nearest-point-on-line": "^7.1.0", + "@turf/square": "^7.1.0", + "@turf/truncate": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/line-to-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/line-to-polygon/-/line-to-polygon-7.1.0.tgz", + "integrity": "sha512-n/IWBRbo+l4XDTz4sfQsQm5bU9xex8KrthK397jQasd7a9PiOKGon9Z1t/lddTJhND6ajVyJ3hl+eZMtpQaghQ==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/mask": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/mask/-/mask-7.1.0.tgz", + "integrity": "sha512-d+u3IIiRhe17TDfP/+UMn9qRlJYPJpK7sj6WorsssluGi0yIG/Z24uWpcLskWKSI8NNgkIbDrp+GIYkJi2t7SA==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "polygon-clipping": "^0.15.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/meta": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/meta/-/meta-7.1.0.tgz", + "integrity": "sha512-ZgGpWWiKz797Fe8lfRj7HKCkGR+nSJ/5aKXMyofCvLSc2PuYJs/qyyifDPWjASQQCzseJ7AlF2Pc/XQ/3XkkuA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/midpoint": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/midpoint/-/midpoint-7.1.0.tgz", + "integrity": "sha512-uiUU9TwRZOCeiTUn8+7oE6MJUvclfq+n6KQ5VCMTZXiRUJjPu7nDLpBle1t2WSv7/w7O0kSQ4FfKXh0gHnkJOw==", + "dependencies": { + "@turf/bearing": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/moran-index": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/moran-index/-/moran-index-7.1.0.tgz", + "integrity": "sha512-xsvAr3IRF/C6PlRMoN/ANrRx6c3QFUJgBCIVfI7re+Lkdprrzgw1HZA48ZjP4F91xbhgA1scnRgQdHFi2vO2SA==", + "dependencies": { + "@turf/distance-weight": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-neighbor-analysis": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-neighbor-analysis/-/nearest-neighbor-analysis-7.1.0.tgz", + "integrity": "sha512-FAhT8/op3DuvqH0XFhv055JhYq/FC4aaIxEZ4hj8c7W6sYhUHAQgdRZ0tJ1RLe5/h+eXhCTbQ+DFfnfv3klu8g==", + "dependencies": { + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/bbox-polygon": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/nearest-point": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point/-/nearest-point-7.1.0.tgz", + "integrity": "sha512-VyInmhqfVWp+jE7sCK95o46qc4tDjAgzbRfRjr+rTgfFS1Sndyy1PdwyNn6TjBFDxiM6e+mjMEeGPjb1smJlEg==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-on-line": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-on-line/-/nearest-point-on-line-7.1.0.tgz", + "integrity": "sha512-aTjAOm7ab0tl5JoxGYRx/J/IbRL1DY1ZCIYQDMEQjK5gOllhclgeBC0wDXDkEZFGaVftjw0W2RtE2I0jX7RG4A==", + "dependencies": { + "@turf/bearing": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/nearest-point-to-line": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/nearest-point-to-line/-/nearest-point-to-line-7.1.0.tgz", + "integrity": "sha512-rY2F/iY4S6U8H0hIoOI25xMWYEiKywxeTvTvn5GP8KCu+2oemfZROWa7n2+hQDRwO2/uaegrGEpxO7zlFarvzg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/point-to-line-distance": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/planepoint": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/planepoint/-/planepoint-7.1.0.tgz", + "integrity": "sha512-hFORBkCd7Q0kNUzLqksT4XglLgTQF9tCjG+dbnZ1VehpZu+w+vlHdoW/mY7XCX3Kj1ObiyzVmXffmVYgwXwF6Q==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-grid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/point-grid/-/point-grid-7.1.0.tgz", + "integrity": "sha512-ihuuUcWuCu4Z1+34UYCM5NGsU2DJaB4uE8cS3jDQoUqlc+8ii2ng8kcGEtTwVn0HdPsoKA7bgvSZcisJO0v6Ww==", + "dependencies": { + "@turf/boolean-within": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-on-feature": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/point-on-feature/-/point-on-feature-7.1.0.tgz", + "integrity": "sha512-lOO5J9I0diuGbN+r6jViEKRH3qfymsBvv25b7U0MuP8g/YC19ncUXZ86dmKfJx1++Rb485DS9h0nFvPmJpaOdg==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/center": "^7.1.0", + "@turf/explode": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/nearest-point": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/point-to-line-distance": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/point-to-line-distance/-/point-to-line-distance-7.1.0.tgz", + "integrity": "sha512-Ps9eTOCaiNgxDaSNQux0wAcSLcrI0y0zYFaD9HnVm+yCMRliQXneFti2XXotS+gR7TpgnLRAAzyx4VzJMSN2tw==", + "dependencies": { + "@turf/bearing": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/projection": "^7.1.0", + "@turf/rhumb-bearing": "^7.1.0", + "@turf/rhumb-distance": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/points-within-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/points-within-polygon/-/points-within-polygon-7.1.0.tgz", + "integrity": "sha512-SzqeD9Gcp11rEya+rCVMy6IPuYMrphNEkCiQ39W6ec9hsaqKlruqmtudKhhckMGVLVUUBCQAu5f55yjcDfVW2w==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-smooth": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-smooth/-/polygon-smooth-7.1.0.tgz", + "integrity": "sha512-mTlmg4XUP5rKgCP/73N91owkAXIc3t1ZKLuwsJGQM1/Op48T3rJmDwVR/WZIMnVlxl5tFbssWCCB3blj4ivx9g==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-tangents": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-tangents/-/polygon-tangents-7.1.0.tgz", + "integrity": "sha512-ffBgHXtkrpgkNs8E6s9sVLSKG4lPGH3WBk294FNKBt9NS+rbhNCv8yTuOMeP0bOm/WizaCq/SUtVryJpUSoI/g==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/boolean-within": "^7.1.0", + "@turf/explode": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/nearest-point": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygon-to-line": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/polygon-to-line/-/polygon-to-line-7.1.0.tgz", + "integrity": "sha512-FBlfyBWNQZCTVGqlJH7LR2VXmvj8AydxrA8zegqek/5oPGtQDeUgIppKmvmuNClqbglhv59QtCUVaDK4bOuCTA==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/polygonize": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/polygonize/-/polygonize-7.1.0.tgz", + "integrity": "sha512-FBjxnOzO29MbE7MWnMPHHYtOo93cQopT5pXhkuPyoKgcTUCntR1+iVFpl5YFbMkYup0j5Oexjo/pbY38lVSZGw==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/envelope": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/projection": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/projection/-/projection-7.1.0.tgz", + "integrity": "sha512-3wHluMoOvXnTe7dfi0kcluTyLNG5MwGsSsK5OA98vkkLH6a1xvItn8e9GcesuT07oB2km/bgefxYEIvjQG5JCA==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/quadrat-analysis": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/quadrat-analysis/-/quadrat-analysis-7.1.0.tgz", + "integrity": "sha512-4O5h9PyWgpqYXja9O+kzr+qk5MUz0IkJqPtt5oWWX5s4jRcLNqiEUf+zi/GDBQkVV8jH3S5klT5CLrF1fxK3hQ==", + "dependencies": { + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/bbox-polygon": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/point-grid": "^7.1.0", + "@turf/random": "^7.1.0", + "@turf/square-grid": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/random": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/random/-/random-7.1.0.tgz", + "integrity": "sha512-22mXv8ejDMUWkz8DSMMqdZb0s7a0ISJzXt6T9cHovfT//vsotzkVH+5PDxJQjvmigKMnpaUgobHmQss23tAwEQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rectangle-grid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/rectangle-grid/-/rectangle-grid-7.1.0.tgz", + "integrity": "sha512-4d2AuDj4LfMMJxNHbds5yX1oFR3mIVAB5D7mx6pFB0e+YkQW0mE2dUWhDTFGJZM+n45yqbNQ5hg19bmiXv94ug==", + "dependencies": { + "@turf/boolean-intersects": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rewind": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/rewind/-/rewind-7.1.0.tgz", + "integrity": "sha512-zX0KDZpeiH89m1vYLTEJdDL6mFyoAsCxcG0P94mXO7/JXWf0AaxzA9MkNnA/d2QYX0G4ioCMjZ5cD6nXb8SXzw==", + "dependencies": { + "@turf/boolean-clockwise": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-bearing": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-bearing/-/rhumb-bearing-7.1.0.tgz", + "integrity": "sha512-ESZt70eOljHVnQMFKIdiu8LIHuQlpZgzh2nqSfV40BrYjsjI/sBKeK+sp2cBWk88nsSDlriPuMTNh4f50Jqpkw==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-destination": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-destination/-/rhumb-destination-7.1.0.tgz", + "integrity": "sha512-WA2TeO3qrv5ZrzNihtTLLYu8X4kd12WEC6JKElm99XhgLao1/4ao2SJUi43l88HqwbrnNiq4TueGQ6tYpXGU7A==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/rhumb-distance": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/rhumb-distance/-/rhumb-distance-7.1.0.tgz", + "integrity": "sha512-fR1V+yC4E1tnbdThomosiLcv0PQOwbfLSPM8rSWuxbMcJtffsncWxyJ0+N1F5juuHbcdaYhlduX8ri5I0ZCejw==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/sample": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/sample/-/sample-7.1.0.tgz", + "integrity": "sha512-9Iq/Ankr4+sgBoh4FpuVVvoW+AA10eej3FS89Zu79SFdCqUIdT7T42Nn3MlSVj4jMyA1oXyT2HIAlNWkwgLw6Q==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/sector": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/sector/-/sector-7.1.0.tgz", + "integrity": "sha512-2FI2rg//eXpa/l+WJtFfvHaf1NJ7ie2MoJ+RH5dKANtrfoof1Ed+y9dXSyuhem2tp/Srq2GhrjaSofFN5/g5vA==", + "dependencies": { + "@turf/circle": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/line-arc": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/shortest-path": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/shortest-path/-/shortest-path-7.1.0.tgz", + "integrity": "sha512-1UmFhS5zHNacLv5rszoFOXq02BGov1oJvjlDatXsSWAd+Z7tqxpDc8D+41edrXy0ZB0Yxsy6WPNagM6hG9PRaA==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/bbox-polygon": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/clean-coords": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/transform-scale": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/simplify": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/simplify/-/simplify-7.1.0.tgz", + "integrity": "sha512-JypymaoiSiFzGHwEoUkK0OPW1KQSnH3hEsEW3UIRS+apzltJ4HdFovYjsfqQgGZJZ+NJ9+dv7h8pgGLYuqcBUQ==", + "dependencies": { + "@turf/clean-coords": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/square": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/square/-/square-7.1.0.tgz", + "integrity": "sha512-ANuA+WXZheGTLW6Veq0i+/B2S4KMhEHAixDv9gQEb9e6FTyqTJVwrqP4CHI3OzA3DZ/ytFf+NTKVofetO/BBQg==", + "dependencies": { + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/square-grid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/square-grid/-/square-grid-7.1.0.tgz", + "integrity": "sha512-JyhsALULVRlkh8htdTi9aXaXFSUv6wRNbeFbqyGJKKlA5eF+AYmyWdI/BlFGQN27xtbtMPeAuLmj+8jaB2omGw==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/rectangle-grid": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/standard-deviational-ellipse": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/standard-deviational-ellipse/-/standard-deviational-ellipse-7.1.0.tgz", + "integrity": "sha512-JqvQFH/witHh+3XgPC1Qk4+3G8w8WQta2NTJjnGinOgFulH+7RD4DcxCT+XXtCHoeq8IvL9VPJRX3ciaW5nSCg==", + "dependencies": { + "@turf/center-mean": "^7.1.0", + "@turf/ellipse": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/points-within-polygon": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/tag": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/tag/-/tag-7.1.0.tgz", + "integrity": "sha512-cD8TC++DnNmdI1B/apTf3nj2zRNY6SoLRliB8K76OB+70Kev8tOf4ZVgAqOd0u+Hpdg/T6l7dO7fyJ6UouE7jA==", + "dependencies": { + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/tesselate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/tesselate/-/tesselate-7.1.0.tgz", + "integrity": "sha512-E/Z94Mx6kUjvQVbEcSuM9MbEo2dkOczRe4ZzjhFlLgJh1dCkfRgwYLH49mb2CcfG/me1arxoCgmtG+qgm7LrCg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "earcut": "^2.2.4", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/tesselate/node_modules/earcut": { + "version": "2.2.4", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-2.2.4.tgz", + "integrity": "sha512-/pjZsA1b4RPHbeWZQn66SWS8nZZWLQQ23oE3Eam7aroEFGEvwKAsJfZ9ytiEMycfzXWpca4FA9QIOehf7PocBQ==" + }, + "node_modules/@turf/tin": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/tin/-/tin-7.1.0.tgz", + "integrity": "sha512-h8Bdm0IYN6OpKHM8lBRWGxkJnZcxL0KYecf8U6pa6DCEYsEXuEExMTvYSD2OmqIsL5ml8P6RjwgyI+dZeE0O9A==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/transform-rotate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/transform-rotate/-/transform-rotate-7.1.0.tgz", + "integrity": "sha512-Vp7VBZ6DqaPV8mkwSycksBFRLqSj3y16zg+uEPSCsXUjbFtw9DOLcyH2F5vMpnC2bOpS9NOB4hebhJRwBwAPWQ==", + "dependencies": { + "@turf/centroid": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/rhumb-bearing": "^7.1.0", + "@turf/rhumb-destination": "^7.1.0", + "@turf/rhumb-distance": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/transform-scale": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/transform-scale/-/transform-scale-7.1.0.tgz", + "integrity": "sha512-m5fLnh3JqrWSv0sAC8Aieet/fr5IZND8BFaE9LakMidtNaJqOIPOyVmUoklcrGn6eK6MX+66rRPn+5a1pahlLQ==", + "dependencies": { + "@turf/bbox": "^7.1.0", + "@turf/center": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/rhumb-bearing": "^7.1.0", + "@turf/rhumb-destination": "^7.1.0", + "@turf/rhumb-distance": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/transform-translate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/transform-translate/-/transform-translate-7.1.0.tgz", + "integrity": "sha512-XA6Oh7VqUDrieY9m9/OF4XpBTd8qlfVGi3ObywojCqtHaHKLK3aXwTBZ276i0QKmZqOQA+2jFa9NhgF/TgBDrw==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/rhumb-destination": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/triangle-grid": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/triangle-grid/-/triangle-grid-7.1.0.tgz", + "integrity": "sha512-hrPyRAuX5PKu7txmc/11VPKrlJDR+JGzd+eijupKTspNLR4n2sqZUx8UXqSxZ/1nq06ScTyjIfGQJVzlRS8BTg==", + "dependencies": { + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/intersect": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/truncate": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/truncate/-/truncate-7.1.0.tgz", + "integrity": "sha512-rrF3AML9PGZw2i5wmt53ESI+Ln9cZyCXgJ7QrEvkT8NbE4OFgmw6p8/1xT8+VEWFSpD4gHz+hmM+5FaFxXvtNg==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/turf": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/turf/-/turf-7.1.0.tgz", + "integrity": "sha512-7NA6tAjbu9oIvIfpRO5AdPrZbFTlUFU02HVA7sLJM9jFeNIZovW09QuDo23uoS2z5l94SXV1GgKKxN5wo7prCw==", + "dependencies": { + "@turf/along": "^7.1.0", + "@turf/angle": "^7.1.0", + "@turf/area": "^7.1.0", + "@turf/bbox": "^7.1.0", + "@turf/bbox-clip": "^7.1.0", + "@turf/bbox-polygon": "^7.1.0", + "@turf/bearing": "^7.1.0", + "@turf/bezier-spline": "^7.1.0", + "@turf/boolean-clockwise": "^7.1.0", + "@turf/boolean-concave": "^7.1.0", + "@turf/boolean-contains": "^7.1.0", + "@turf/boolean-crosses": "^7.1.0", + "@turf/boolean-disjoint": "^7.1.0", + "@turf/boolean-equal": "^7.1.0", + "@turf/boolean-intersects": "^7.1.0", + "@turf/boolean-overlap": "^7.1.0", + "@turf/boolean-parallel": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/boolean-point-on-line": "^7.1.0", + "@turf/boolean-touches": "^7.1.0", + "@turf/boolean-valid": "^7.1.0", + "@turf/boolean-within": "^7.1.0", + "@turf/buffer": "^7.1.0", + "@turf/center": "^7.1.0", + "@turf/center-mean": "^7.1.0", + "@turf/center-median": "^7.1.0", + "@turf/center-of-mass": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/circle": "^7.1.0", + "@turf/clean-coords": "^7.1.0", + "@turf/clone": "^7.1.0", + "@turf/clusters": "^7.1.0", + "@turf/clusters-dbscan": "^7.1.0", + "@turf/clusters-kmeans": "^7.1.0", + "@turf/collect": "^7.1.0", + "@turf/combine": "^7.1.0", + "@turf/concave": "^7.1.0", + "@turf/convex": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/difference": "^7.1.0", + "@turf/dissolve": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/distance-weight": "^7.1.0", + "@turf/ellipse": "^7.1.0", + "@turf/envelope": "^7.1.0", + "@turf/explode": "^7.1.0", + "@turf/flatten": "^7.1.0", + "@turf/flip": "^7.1.0", + "@turf/geojson-rbush": "^7.1.0", + "@turf/great-circle": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/hex-grid": "^7.1.0", + "@turf/interpolate": "^7.1.0", + "@turf/intersect": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@turf/isobands": "^7.1.0", + "@turf/isolines": "^7.1.0", + "@turf/kinks": "^7.1.0", + "@turf/length": "^7.1.0", + "@turf/line-arc": "^7.1.0", + "@turf/line-chunk": "^7.1.0", + "@turf/line-intersect": "^7.1.0", + "@turf/line-offset": "^7.1.0", + "@turf/line-overlap": "^7.1.0", + "@turf/line-segment": "^7.1.0", + "@turf/line-slice": "^7.1.0", + "@turf/line-slice-along": "^7.1.0", + "@turf/line-split": "^7.1.0", + "@turf/line-to-polygon": "^7.1.0", + "@turf/mask": "^7.1.0", + "@turf/meta": "^7.1.0", + "@turf/midpoint": "^7.1.0", + "@turf/moran-index": "^7.1.0", + "@turf/nearest-neighbor-analysis": "^7.1.0", + "@turf/nearest-point": "^7.1.0", + "@turf/nearest-point-on-line": "^7.1.0", + "@turf/nearest-point-to-line": "^7.1.0", + "@turf/planepoint": "^7.1.0", + "@turf/point-grid": "^7.1.0", + "@turf/point-on-feature": "^7.1.0", + "@turf/point-to-line-distance": "^7.1.0", + "@turf/points-within-polygon": "^7.1.0", + "@turf/polygon-smooth": "^7.1.0", + "@turf/polygon-tangents": "^7.1.0", + "@turf/polygon-to-line": "^7.1.0", + "@turf/polygonize": "^7.1.0", + "@turf/projection": "^7.1.0", + "@turf/quadrat-analysis": "^7.1.0", + "@turf/random": "^7.1.0", + "@turf/rectangle-grid": "^7.1.0", + "@turf/rewind": "^7.1.0", + "@turf/rhumb-bearing": "^7.1.0", + "@turf/rhumb-destination": "^7.1.0", + "@turf/rhumb-distance": "^7.1.0", + "@turf/sample": "^7.1.0", + "@turf/sector": "^7.1.0", + "@turf/shortest-path": "^7.1.0", + "@turf/simplify": "^7.1.0", + "@turf/square": "^7.1.0", + "@turf/square-grid": "^7.1.0", + "@turf/standard-deviational-ellipse": "^7.1.0", + "@turf/tag": "^7.1.0", + "@turf/tesselate": "^7.1.0", + "@turf/tin": "^7.1.0", + "@turf/transform-rotate": "^7.1.0", + "@turf/transform-scale": "^7.1.0", + "@turf/transform-translate": "^7.1.0", + "@turf/triangle-grid": "^7.1.0", + "@turf/truncate": "^7.1.0", + "@turf/union": "^7.1.0", + "@turf/unkink-polygon": "^7.1.0", + "@turf/voronoi": "^7.1.0", + "@types/geojson": "^7946.0.10", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/union": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/union/-/union-7.1.0.tgz", + "integrity": "sha512-7VI8jONdBg9qmbfNlLQycPr93l5aU9HGMgWI9M6pb4ERuU2+p8KgffCgs2NyMtP2HxPrKSybzj31g7bnbEKofQ==", + "dependencies": { + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "polygon-clipping": "^0.15.3", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/unkink-polygon": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/unkink-polygon/-/unkink-polygon-7.1.0.tgz", + "integrity": "sha512-pqkirni2aLpRA1ELFIuJz+mkjYyJQX8Ar6BflSu1b0ajY/CTrcDxbIv1x8UfvbybLzdJc4Gxzg5mo4cEtSwtaQ==", + "dependencies": { + "@turf/area": "^7.1.0", + "@turf/boolean-point-in-polygon": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/meta": "^7.1.0", + "@types/geojson": "^7946.0.10", + "rbush": "^3.0.1", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@turf/voronoi": { + "version": "7.1.0", + "resolved": "https://registry.npmjs.org/@turf/voronoi/-/voronoi-7.1.0.tgz", + "integrity": "sha512-xUvzPDG6GaqEekgxd+pjeMKJXOYJ3eFIqUHbTe/ISKzzv3f2cFGiR2VH7ZGXri8d4ozzCQbUQ27ilHPPLf5+xw==", + "dependencies": { + "@turf/clone": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/invariant": "^7.1.0", + "@types/d3-voronoi": "^1.1.12", + "@types/geojson": "^7946.0.10", + "d3-voronoi": "1.1.2", + "tslib": "^2.6.2" + }, + "funding": { + "url": "https://opencollective.com/turf" + } + }, + "node_modules/@types/babel__core": { + "version": "7.20.5", + "resolved": "https://registry.npmjs.org/@types/babel__core/-/babel__core-7.20.5.tgz", + "integrity": "sha512-qoQprZvz5wQFJwMDqeseRXWv3rqMvhgpbXFfVyWhbx9X47POIA6i/+dXefEmZKoAgOaTdaIgNSMqMIU61yRyzA==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.20.7", + "@babel/types": "^7.20.7", + "@types/babel__generator": "*", + "@types/babel__template": "*", + "@types/babel__traverse": "*" + } + }, + "node_modules/@types/babel__generator": { + "version": "7.6.8", + "resolved": "https://registry.npmjs.org/@types/babel__generator/-/babel__generator-7.6.8.tgz", + "integrity": "sha512-ASsj+tpEDsEiFr1arWrlN6V3mdfjRMZt6LtK/Vp/kreFLnr5QH5+DhvD5nINYZXzwJvXeGq+05iUXcAzVrqWtw==", + "dev": true, + "dependencies": { + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__template": { + "version": "7.4.4", + "resolved": "https://registry.npmjs.org/@types/babel__template/-/babel__template-7.4.4.tgz", + "integrity": "sha512-h/NUaSyG5EyxBIp8YRxo4RMe2/qQgvyowRwVMzhYhBCONbW8PUsg4lkFMrhgZhUe5z3L3MiLDuvyJ/CaPa2A8A==", + "dev": true, + "dependencies": { + "@babel/parser": "^7.1.0", + "@babel/types": "^7.0.0" + } + }, + "node_modules/@types/babel__traverse": { + "version": "7.20.6", + "resolved": "https://registry.npmjs.org/@types/babel__traverse/-/babel__traverse-7.20.6.tgz", + "integrity": "sha512-r1bzfrm0tomOI8g1SzvCaQHo6Lcv6zu0EA+W2kHrt8dyrHQxGzBBL4kdkzIS+jBMV+EYcMAEAqXqYaLJq5rOZg==", + "dev": true, + "dependencies": { + "@babel/types": "^7.20.7" + } + }, + "node_modules/@types/base64-js": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/@types/base64-js/-/base64-js-1.3.2.tgz", + "integrity": "sha512-Q2Xn2/vQHRGLRXhQ5+BSLwhHkR3JVflxVKywH0Q6fVoAiUE8fFYL2pE5/l2ZiOiBDfA8qUqRnSxln4G/NFz1Sg==" + }, + "node_modules/@types/d3": { + "version": "7.4.3", + "resolved": "https://registry.npmjs.org/@types/d3/-/d3-7.4.3.tgz", + "integrity": "sha512-lZXZ9ckh5R8uiFVt8ogUNf+pIrK4EsWrx2Np75WvF/eTpJ0FMHNhjXk8CKEx/+gpHbNQyJWehbFaTvqmHWB3ww==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/d3-axis": "*", + "@types/d3-brush": "*", + "@types/d3-chord": "*", + "@types/d3-color": "*", + "@types/d3-contour": "*", + "@types/d3-delaunay": "*", + "@types/d3-dispatch": "*", + "@types/d3-drag": "*", + "@types/d3-dsv": "*", + "@types/d3-ease": "*", + "@types/d3-fetch": "*", + "@types/d3-force": "*", + "@types/d3-format": "*", + "@types/d3-geo": "*", + "@types/d3-hierarchy": "*", + "@types/d3-interpolate": "*", + "@types/d3-path": "*", + "@types/d3-polygon": "*", + "@types/d3-quadtree": "*", + "@types/d3-random": "*", + "@types/d3-scale": "*", + "@types/d3-scale-chromatic": "*", + "@types/d3-selection": "*", + "@types/d3-shape": "*", + "@types/d3-time": "*", + "@types/d3-time-format": "*", + "@types/d3-timer": "*", + "@types/d3-transition": "*", + "@types/d3-zoom": "*" + } + }, + "node_modules/@types/d3-array": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/@types/d3-array/-/d3-array-3.2.1.tgz", + "integrity": "sha512-Y2Jn2idRrLzUfAKV2LyRImR+y4oa2AntrgID95SHJxuMUrkNXmanDSed71sRNZysveJVt1hLLemQZIady0FpEg==", + "dev": true + }, + "node_modules/@types/d3-axis": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-axis/-/d3-axis-3.0.6.tgz", + "integrity": "sha512-pYeijfZuBd87T0hGn0FO1vQ/cgLk6E1ALJjfkC0oJ8cbwkZl3TpgS8bVBLZN+2jjGgg38epgxb2zmoGtSfvgMw==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-brush": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-brush/-/d3-brush-3.0.6.tgz", + "integrity": "sha512-nH60IZNNxEcrh6L1ZSMNA28rj27ut/2ZmI3r96Zd+1jrZD++zD3LsMIjWlvg4AYrHn/Pqz4CF3veCxGjtbqt7A==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-chord": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-chord/-/d3-chord-3.0.6.tgz", + "integrity": "sha512-LFYWWd8nwfwEmTZG9PfQxd17HbNPksHBiJHaKuY1XeqscXacsS2tyoo6OdRsjf+NQYeB6XrNL3a25E3gH69lcg==", + "dev": true + }, + "node_modules/@types/d3-color": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/@types/d3-color/-/d3-color-3.1.3.tgz", + "integrity": "sha512-iO90scth9WAbmgv7ogoq57O9YpKmFBbmoEoCHDB2xMBY0+/KVrqAaCDyCE16dUspeOvIxFFRI+0sEtqDqy2b4A==", + "dev": true + }, + "node_modules/@types/d3-contour": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-contour/-/d3-contour-3.0.6.tgz", + "integrity": "sha512-BjzLgXGnCWjUSYGfH1cpdo41/hgdWETu4YxpezoztawmqsvCeep+8QGfiY6YbDvfgHz/DkjeIkkZVJavB4a3rg==", + "dev": true, + "dependencies": { + "@types/d3-array": "*", + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-ZMaSKu4THYCU6sV64Lhg6qjf1orxBthaC161plr5KuPHo3CNm8DTHiLw/5Eq2b6TsNP0W0iJrUOFscY6Q450Hw==", + "dev": true + }, + "node_modules/@types/d3-dispatch": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-dispatch/-/d3-dispatch-3.0.6.tgz", + "integrity": "sha512-4fvZhzMeeuBJYZXRXrRIQnvUYfyXwYmLsdiN7XXmVNQKKw1cM8a5WdID0g1hVFZDqT9ZqZEY5pD44p24VS7iZQ==", + "dev": true + }, + "node_modules/@types/d3-drag": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-drag/-/d3-drag-3.0.7.tgz", + "integrity": "sha512-HE3jVKlzU9AaMazNufooRJ5ZpWmLIoc90A37WU2JMmeq28w1FQqCZswHZ3xR+SuxYftzHq6WU6KJHvqxKzTxxQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-dsv": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-dsv/-/d3-dsv-3.0.7.tgz", + "integrity": "sha512-n6QBF9/+XASqcKK6waudgL0pf/S5XHPPI8APyMLLUHd8NqouBGLsU8MgtO7NINGtPBtk9Kko/W4ea0oAspwh9g==", + "dev": true + }, + "node_modules/@types/d3-ease": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-ease/-/d3-ease-3.0.2.tgz", + "integrity": "sha512-NcV1JjO5oDzoK26oMzbILE6HW7uVXOHLQvHshBUW4UMdZGfiY6v5BeQwh9a9tCzv+CeefZQHJt5SRgK154RtiA==", + "dev": true + }, + "node_modules/@types/d3-fetch": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/@types/d3-fetch/-/d3-fetch-3.0.7.tgz", + "integrity": "sha512-fTAfNmxSb9SOWNB9IoG5c8Hg6R+AzUHDRlsXsDZsNp6sxAEOP0tkP3gKkNSO/qmHPoBFTxNrjDprVHDQDvo5aA==", + "dev": true, + "dependencies": { + "@types/d3-dsv": "*" + } + }, + "node_modules/@types/d3-force": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-force/-/d3-force-3.0.10.tgz", + "integrity": "sha512-ZYeSaCF3p73RdOKcjj+swRlZfnYpK1EbaDiYICEEp5Q6sUiqFaFQ9qgoshp5CzIyyb/yD09kD9o2zEltCexlgw==", + "dev": true + }, + "node_modules/@types/d3-format": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-format/-/d3-format-3.0.4.tgz", + "integrity": "sha512-fALi2aI6shfg7vM5KiR1wNJnZ7r6UuggVqtDA+xiEdPZQwy/trcQaHnwShLuLdta2rTymCNpxYTiMZX/e09F4g==", + "dev": true + }, + "node_modules/@types/d3-geo": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-geo/-/d3-geo-3.1.0.tgz", + "integrity": "sha512-856sckF0oP/diXtS4jNsiQw/UuK5fQG8l/a9VVLeSouf1/PPbBE1i1W852zVwKwYCBkFJJB7nCFTbk6UMEXBOQ==", + "dev": true, + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/d3-hierarchy": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/@types/d3-hierarchy/-/d3-hierarchy-3.1.7.tgz", + "integrity": "sha512-tJFtNoYBtRtkNysX1Xq4sxtjK8YgoWUNpIiUee0/jHGRwqvzYxkq0hGVbbOGSz+JgFxxRu4K8nb3YpG3CMARtg==", + "dev": true + }, + "node_modules/@types/d3-interpolate": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/d3-interpolate/-/d3-interpolate-3.0.4.tgz", + "integrity": "sha512-mgLPETlrpVV1YRJIglr4Ez47g7Yxjl1lj7YKsiMCb27VJH9W8NVM6Bb9d8kkpG/uAQS5AmbA48q2IAolKKo1MA==", + "dev": true, + "dependencies": { + "@types/d3-color": "*" + } + }, + "node_modules/@types/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/@types/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-P2dlU/q51fkOc/Gfl3Ul9kicV7l+ra934qBFXCFhrZMOL6du1TM0pm1ThYvENukyOn5h9v+yMJ9Fn5JK4QozrQ==", + "dev": true + }, + "node_modules/@types/d3-polygon": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-polygon/-/d3-polygon-3.0.2.tgz", + "integrity": "sha512-ZuWOtMaHCkN9xoeEMr1ubW2nGWsp4nIql+OPQRstu4ypeZ+zk3YKqQT0CXVe/PYqrKpZAi+J9mTs05TKwjXSRA==", + "dev": true + }, + "node_modules/@types/d3-quadtree": { + "version": "3.0.6", + "resolved": "https://registry.npmjs.org/@types/d3-quadtree/-/d3-quadtree-3.0.6.tgz", + "integrity": "sha512-oUzyO1/Zm6rsxKRHA1vH0NEDG58HrT5icx/azi9MF1TWdtttWl0UIUsjEQBBh+SIkrpd21ZjEv7ptxWys1ncsg==", + "dev": true + }, + "node_modules/@types/d3-random": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-random/-/d3-random-3.0.3.tgz", + "integrity": "sha512-Imagg1vJ3y76Y2ea0871wpabqp613+8/r0mCLEBfdtqC7xMSfj9idOnmBYyMoULfHePJyxMAw3nWhJxzc+LFwQ==", + "dev": true + }, + "node_modules/@types/d3-scale": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-scale/-/d3-scale-4.0.8.tgz", + "integrity": "sha512-gkK1VVTr5iNiYJ7vWDI+yUFFlszhNMtVeneJ6lUTKPjprsvLLI9/tgEGiXJOnlINJA8FyA88gfnQsHbybVZrYQ==", + "dev": true, + "dependencies": { + "@types/d3-time": "*" + } + }, + "node_modules/@types/d3-scale-chromatic": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-scale-chromatic/-/d3-scale-chromatic-3.0.3.tgz", + "integrity": "sha512-laXM4+1o5ImZv3RpFAsTRn3TEkzqkytiOY0Dz0sq5cnd1dtNlk6sHLon4OvqaiJb28T0S/TdsBI3Sjsy+keJrw==", + "dev": true + }, + "node_modules/@types/d3-selection": { + "version": "3.0.10", + "resolved": "https://registry.npmjs.org/@types/d3-selection/-/d3-selection-3.0.10.tgz", + "integrity": "sha512-cuHoUgS/V3hLdjJOLTT691+G2QoqAjCVLmr4kJXR4ha56w1Zdu8UUQ5TxLRqudgNjwXeQxKMq4j+lyf9sWuslg==", + "dev": true + }, + "node_modules/@types/d3-shape": { + "version": "3.1.6", + "resolved": "https://registry.npmjs.org/@types/d3-shape/-/d3-shape-3.1.6.tgz", + "integrity": "sha512-5KKk5aKGu2I+O6SONMYSNflgiP0WfZIQvVUMan50wHsLG1G94JlxEVnCpQARfTtzytuY0p/9PXXZb3I7giofIA==", + "dev": true, + "dependencies": { + "@types/d3-path": "*" + } + }, + "node_modules/@types/d3-time": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time/-/d3-time-3.0.3.tgz", + "integrity": "sha512-2p6olUZ4w3s+07q3Tm2dbiMZy5pCDfYwtLXXHUnVzXgQlZ/OyPtUz6OL382BkOuGlLXqfT+wqv8Fw2v8/0geBw==", + "dev": true + }, + "node_modules/@types/d3-time-format": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/@types/d3-time-format/-/d3-time-format-4.0.3.tgz", + "integrity": "sha512-5xg9rC+wWL8kdDj153qZcsJ0FWiFt0J5RB6LYUNZjwSnesfblqrI/bJ1wBdJ8OQfncgbJG5+2F+qfqnqyzYxyg==", + "dev": true + }, + "node_modules/@types/d3-timer": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/@types/d3-timer/-/d3-timer-3.0.2.tgz", + "integrity": "sha512-Ps3T8E8dZDam6fUyNiMkekK3XUsaUEik+idO9/YjPtfj2qruF8tFBXS7XhtE4iIXBLxhmLjP3SXpLhVf21I9Lw==", + "dev": true + }, + "node_modules/@types/d3-transition": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-transition/-/d3-transition-3.0.8.tgz", + "integrity": "sha512-ew63aJfQ/ms7QQ4X7pk5NxQ9fZH/z+i24ZfJ6tJSfqxJMrYLiK01EAs2/Rtw/JreGUsS3pLPNV644qXFGnoZNQ==", + "dev": true, + "dependencies": { + "@types/d3-selection": "*" + } + }, + "node_modules/@types/d3-voronoi": { + "version": "1.1.12", + "resolved": "https://registry.npmjs.org/@types/d3-voronoi/-/d3-voronoi-1.1.12.tgz", + "integrity": "sha512-DauBl25PKZZ0WVJr42a6CNvI6efsdzofl9sajqZr2Gf5Gu733WkDdUGiPkUHXiUvYGzNNlFQde2wdZdfQPG+yw==" + }, + "node_modules/@types/d3-zoom": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/@types/d3-zoom/-/d3-zoom-3.0.8.tgz", + "integrity": "sha512-iqMC4/YlFCSlO8+2Ii1GGGliCAY4XdeG748w5vQUbevlbDu0zSjH/+jojorQVBK/se0j6DUFNPBGSqD3YWYnDw==", + "dev": true, + "dependencies": { + "@types/d3-interpolate": "*", + "@types/d3-selection": "*" + } + }, + "node_modules/@types/estree": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/@types/estree/-/estree-1.0.6.tgz", + "integrity": "sha512-AYnb1nQyY49te+VRAVgmzfcgjYS91mY5P0TKUDCLEM+gNnA+3T6rWITXRLYCpahpqSQbN5cE+gHpnPyXjHWxcw==", + "devOptional": true + }, + "node_modules/@types/geojson": { + "version": "7946.0.15", + "resolved": "https://registry.npmjs.org/@types/geojson/-/geojson-7946.0.15.tgz", + "integrity": "sha512-9oSxFzDCT2Rj6DfcHF8G++jxBKS7mBqXl5xrRW+Kbvjry6Uduya2iiwqHPhVXpasAVMBYKkEPGgKhd3+/HZ6xA==" + }, + "node_modules/@types/geojson-vt": { + "version": "3.2.5", + "resolved": "https://registry.npmjs.org/@types/geojson-vt/-/geojson-vt-3.2.5.tgz", + "integrity": "sha512-qDO7wqtprzlpe8FfQ//ClPV9xiuoh2nkIgiouIptON9w5jvD/fA4szvP9GBlDVdJ5dldAl0kX/sy3URbWwLx0g==", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/graceful-fs": { + "version": "4.1.9", + "resolved": "https://registry.npmjs.org/@types/graceful-fs/-/graceful-fs-4.1.9.tgz", + "integrity": "sha512-olP3sd1qOEe5dXTSaFvQG+02VdRXcdytWLAZsAq1PecU8uqQAhkrnbli7DagjtXKW/Bl7YJbUsa8MPcuc8LHEQ==", + "dev": true, + "dependencies": { + "@types/node": "*" + } + }, + "node_modules/@types/istanbul-lib-coverage": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-coverage/-/istanbul-lib-coverage-2.0.6.tgz", + "integrity": "sha512-2QF/t/auWm0lsy8XtKVPG19v3sSOQlJe/YHZgfjb/KBBHOGSV+J2q/S671rcq9uTBrLAXmZpqJiaQbMT+zNU1w==", + "dev": true + }, + "node_modules/@types/istanbul-lib-report": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/@types/istanbul-lib-report/-/istanbul-lib-report-3.0.3.tgz", + "integrity": "sha512-NQn7AHQnk/RSLOxrBbGyJM/aVQ+pjj5HCgasFxc0K/KhoATfQ/47AyUl15I2yBUpihjmas+a+VJBOqecrFH+uA==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-coverage": "*" + } + }, + "node_modules/@types/istanbul-reports": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/@types/istanbul-reports/-/istanbul-reports-3.0.4.tgz", + "integrity": "sha512-pk2B1NWalF9toCRu6gjBzR69syFjP4Od8WRAX+0mmf9lAjCRicLOWc+ZrxZHx/0XRjotgkF9t6iaMJ+aXcOdZQ==", + "dev": true, + "dependencies": { + "@types/istanbul-lib-report": "*" + } + }, + "node_modules/@types/jest": { + "version": "29.5.13", + "resolved": "https://registry.npmjs.org/@types/jest/-/jest-29.5.13.tgz", + "integrity": "sha512-wd+MVEZCHt23V0/L642O5APvspWply/rGY5BcW4SUETo2UzPU3Z26qr8jC2qxpimI2jjx9h7+2cj2FwIr01bXg==", + "dev": true, + "dependencies": { + "expect": "^29.0.0", + "pretty-format": "^29.0.0" + } + }, + "node_modules/@types/jquery": { + "version": "3.5.30", + "resolved": "https://registry.npmjs.org/@types/jquery/-/jquery-3.5.30.tgz", + "integrity": "sha512-nbWKkkyb919DOUxjmRVk8vwtDb0/k8FKncmUKFi+NY+QXqWltooxTrswvz4LspQwxvLdvzBN1TImr6cw3aQx2A==", + "dependencies": { + "@types/sizzle": "*" + } + }, + "node_modules/@types/json-schema": { + "version": "7.0.15", + "resolved": "https://registry.npmjs.org/@types/json-schema/-/json-schema-7.0.15.tgz", + "integrity": "sha512-5+fP8P8MFNC+AyZCDxrB2pkZFPGzqQWUzpSeuuVLvm8VMcorNYavBqoFcxK8bQz4Qsbn4oUEEem4wDLfcysGHA==", + "dev": true + }, + "node_modules/@types/json5": { + "version": "0.0.29", + "resolved": "https://registry.npmjs.org/@types/json5/-/json5-0.0.29.tgz", + "integrity": "sha512-dRLjCWHYg4oaA77cxO64oO+7JwCwnIzkZPdrrC71jQmQtlhM556pwKo5bUzqvZndkVbeFLIIi+9TC40JNF5hNQ==", + "dev": true + }, + "node_modules/@types/leaflet": { + "version": "1.9.14", + "resolved": "https://registry.npmjs.org/@types/leaflet/-/leaflet-1.9.14.tgz", + "integrity": "sha512-sx2q6MDJaajwhKeVgPSvqXd8rhNJSTA3tMidQGduZn9S6WBYxDkCpSpV5xXEmSg7Cgdk/5vJGhVF1kMYLzauBg==", + "license": "MIT", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/lodash": { + "version": "4.17.7", + "resolved": "https://registry.npmjs.org/@types/lodash/-/lodash-4.17.7.tgz", + "integrity": "sha512-8wTvZawATi/lsmNu10/j2hk1KEP0IvjubqPE3cu1Xz7xfXXt5oCq3SNUz4fMIP4XGF9Ky+Ue2tBA3hcS7LSBlA==", + "dev": true + }, + "node_modules/@types/mapbox__mapbox-gl-draw": { + "version": "1.4.8", + "resolved": "https://registry.npmjs.org/@types/mapbox__mapbox-gl-draw/-/mapbox__mapbox-gl-draw-1.4.8.tgz", + "integrity": "sha512-700zPikQXfFMB2vtkJdXSROiqS5F19guf6QdYqvlgCdaMxGmdlLITRq6/zFpzfVQDrgpWex5M8vLtbwjZfup8g==", + "dev": true, + "dependencies": { + "@types/geojson": "*", + "mapbox-gl": "*" + } + }, + "node_modules/@types/mapbox__point-geometry": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__point-geometry/-/mapbox__point-geometry-0.1.4.tgz", + "integrity": "sha512-mUWlSxAmYLfwnRBmgYV86tgYmMIICX4kza8YnE/eIlywGe2XoOxlpVnXWwir92xRLjwyarqwpu2EJKD2pk0IUA==" + }, + "node_modules/@types/mapbox__vector-tile": { + "version": "1.3.4", + "resolved": "https://registry.npmjs.org/@types/mapbox__vector-tile/-/mapbox__vector-tile-1.3.4.tgz", + "integrity": "sha512-bpd8dRn9pr6xKvuEBQup8pwQfD4VUyqO/2deGjfpe6AwC8YRlyEipvefyRJUSiCJTZuCb8Pl1ciVV5ekqJ96Bg==", + "dependencies": { + "@types/geojson": "*", + "@types/mapbox__point-geometry": "*", + "@types/pbf": "*" + } + }, + "node_modules/@types/node": { + "version": "22.5.5", + "resolved": "https://registry.npmjs.org/@types/node/-/node-22.5.5.tgz", + "integrity": "sha512-Xjs4y5UPO/CLdzpgR6GirZJx36yScjh73+2NlLlkFRSoQN8B0DpfXPdZGnvVmLRLOsqDpOfTNv7D9trgGhmOIA==", + "devOptional": true, + "dependencies": { + "undici-types": "~6.19.2" + } + }, + "node_modules/@types/pbf": { + "version": "3.0.5", + "resolved": "https://registry.npmjs.org/@types/pbf/-/pbf-3.0.5.tgz", + "integrity": "sha512-j3pOPiEcWZ34R6a6mN07mUkM4o4Lwf6hPNt8eilOeZhTFbxFXmKhvXl9Y28jotFPaI1bpPDJsbCprUoNke6OrA==" + }, + "node_modules/@types/semver": { + "version": "7.5.8", + "resolved": "https://registry.npmjs.org/@types/semver/-/semver-7.5.8.tgz", + "integrity": "sha512-I8EUhyrgfLrcTkzV3TSsGyl1tSuPrEDzr0yd5m90UgNxQkyDXULk3b6MlQqTCpZpNtWe1K0hzclnZkTcLBe2UQ==", + "dev": true + }, + "node_modules/@types/sizzle": { + "version": "2.3.8", + "resolved": "https://registry.npmjs.org/@types/sizzle/-/sizzle-2.3.8.tgz", + "integrity": "sha512-0vWLNK2D5MT9dg0iOo8GlKguPAU02QjmZitPEsXRuJXU/OGIOt9vT9Fc26wtYuavLxtO45v9PGleoL9Z0k1LHg==" + }, + "node_modules/@types/stack-utils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@types/stack-utils/-/stack-utils-2.0.3.tgz", + "integrity": "sha512-9aEbYZ3TbYMznPdcdr3SmIrLXwC/AKZXQeCf9Pgao5CKb8CyHuEX5jzWPTkvregvhRJHcpRO6BFoGW9ycaOkYw==", + "dev": true + }, + "node_modules/@types/supercluster": { + "version": "7.1.3", + "resolved": "https://registry.npmjs.org/@types/supercluster/-/supercluster-7.1.3.tgz", + "integrity": "sha512-Z0pOY34GDFl3Q6hUFYf3HkTwKEE02e7QgtJppBt+beEAxnyOpJua+voGFvxINBHa06GwLFFym7gRPY2SiKIfIA==", + "dependencies": { + "@types/geojson": "*" + } + }, + "node_modules/@types/yargs": { + "version": "17.0.33", + "resolved": "https://registry.npmjs.org/@types/yargs/-/yargs-17.0.33.tgz", + "integrity": "sha512-WpxBCKWPLr4xSsHgz511rFJAM+wS28w2zEO1QDNY5zM/S8ok70NNfztH0xwhqKyaK0OHCbN98LDAZuy1ctxDkA==", + "dev": true, + "dependencies": { + "@types/yargs-parser": "*" + } + }, + "node_modules/@types/yargs-parser": { + "version": "21.0.3", + "resolved": "https://registry.npmjs.org/@types/yargs-parser/-/yargs-parser-21.0.3.tgz", + "integrity": "sha512-I4q9QU9MQv4oEOz4tAHJtNz1cwuLxn2F3xcc2iV5WdqLPpUnj30aUuxt1mAxYTG+oe8CZMV/+6rU4S4gRDzqtQ==", + "dev": true + }, + "node_modules/@typescript-eslint/eslint-plugin": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-6.21.0.tgz", + "integrity": "sha512-oy9+hTPCUFpngkEZUSzbf9MxI65wbKFoQYsgPdILTfbUldp5ovUuphZVe4i30emU9M/kP+T64Di0mxl7dSw3MA==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.5.1", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/type-utils": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "graphemer": "^1.4.0", + "ignore": "^5.2.4", + "natural-compare": "^1.4.0", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^6.0.0 || ^6.0.0-alpha", + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/parser": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-6.21.0.tgz", + "integrity": "sha512-tbsV1jPne5CkFQCgPBcDOt30ItF7aJoZL997JSF7MhGQqOeT3svWRYxiqlfA5RUdlHN6Fi+EI9bxqbdyAUZjYQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/scope-manager": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-6.21.0.tgz", + "integrity": "sha512-OwLUIWZJry80O99zvqXVEioyniJMa+d2GrqpUTqi5/v5D5rOrppJVBPa0yKCblcigC0/aYAzxxqQ1B+DS2RYsg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/type-utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-6.21.0.tgz", + "integrity": "sha512-rZQI7wHfao8qMX3Rd3xqeYSMCL3SoiSQLBATSiVKARdFGCYSRvmViieZjqc58jKgs8Y8i9YvVVhRbHSTA4VBag==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "6.21.0", + "@typescript-eslint/utils": "6.21.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/types": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-6.21.0.tgz", + "integrity": "sha512-1kFmZ1rOm5epu9NZEZm1kckCDGj5UJEf7P1kliH4LKu/RkwpsfqqGmY2OOcUs18lSlQBKLDYBOGxRVtrMN5lpg==", + "dev": true, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@typescript-eslint/typescript-estree": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-6.21.0.tgz", + "integrity": "sha512-6npJTkZcO+y2/kr+z0hc4HwNfrrP4kNYh57ek7yCNlrBjWQ1Y0OS7jiZTkgumrvkX5HkEKXFZkkdFNkaW2wmUQ==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/visitor-keys": "6.21.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "9.0.3", + "semver": "^7.5.4", + "ts-api-utils": "^1.0.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@typescript-eslint/utils": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-6.21.0.tgz", + "integrity": "sha512-NfWVaC8HP9T8cbKQxHcsJBY5YE1O33+jpMwN45qzWWaPDZgLIbo12toGMWnmhvCpd3sIxkpDw3Wv1B3dYrbDQQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@types/json-schema": "^7.0.12", + "@types/semver": "^7.5.0", + "@typescript-eslint/scope-manager": "6.21.0", + "@typescript-eslint/types": "6.21.0", + "@typescript-eslint/typescript-estree": "6.21.0", + "semver": "^7.5.4" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^7.0.0 || ^8.0.0" + } + }, + "node_modules/@typescript-eslint/visitor-keys": { + "version": "6.21.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-6.21.0.tgz", + "integrity": "sha512-JJtkDduxLi9bivAB+cYOVMtbkqdPOhZ+ZI5LC47MIRrDV4Yn2o+ZnW10Nkmr28xRpSpdJ6Sm42Hjf2+REYXm0A==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "6.21.0", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^16.0.0 || >=18.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@ungap/structured-clone": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/@ungap/structured-clone/-/structured-clone-1.2.0.tgz", + "integrity": "sha512-zuVdFrMJiuCDQUMCzQaD6KL28MjnqqN8XnAqiEq9PNm/hCPTSGfrXCOfwj1ow4LFb/tNymJPwsNbVePc1xFqrQ==", + "dev": true + }, + "node_modules/@vitejs/plugin-vue": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/@vitejs/plugin-vue/-/plugin-vue-5.1.3.tgz", + "integrity": "sha512-3xbWsKEKXYlmX82aOHufFQVnkbMC/v8fLpWwh6hWOUrK5fbbtBh9Q/WWse27BFgSy2/e2c0fz5Scgya9h2GLhw==", + "dev": true, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": "^5.0.0", + "vue": "^3.2.25" + } + }, + "node_modules/@volar/language-core": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@volar/language-core/-/language-core-2.4.5.tgz", + "integrity": "sha512-F4tA0DCO5Q1F5mScHmca0umsi2ufKULAnMOVBfMsZdT4myhVl4WdKRwCaKcfOkIEuyrAVvtq1ESBdZ+rSyLVww==", + "dev": true, + "dependencies": { + "@volar/source-map": "2.4.5" + } + }, + "node_modules/@volar/source-map": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@volar/source-map/-/source-map-2.4.5.tgz", + "integrity": "sha512-varwD7RaKE2J/Z+Zu6j3mNNJbNT394qIxXwdvz/4ao/vxOfyClZpSDtLKkwWmecinkOVos5+PWkWraelfMLfpw==", + "dev": true + }, + "node_modules/@volar/typescript": { + "version": "2.4.5", + "resolved": "https://registry.npmjs.org/@volar/typescript/-/typescript-2.4.5.tgz", + "integrity": "sha512-mcT1mHvLljAEtHviVcBuOyAwwMKz1ibXTi5uYtP/pf4XxoAzpdkQ+Br2IC0NPCvLCbjPZmbf3I0udndkfB1CDg==", + "dev": true, + "dependencies": { + "@volar/language-core": "2.4.5", + "path-browserify": "^1.0.1", + "vscode-uri": "^3.0.8" + } + }, + "node_modules/@vue/compiler-core": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-core/-/compiler-core-3.5.6.tgz", + "integrity": "sha512-r+gNu6K4lrvaQLQGmf+1gc41p3FO2OUJyWmNqaIITaJU6YFiV5PtQSFZt8jfztYyARwqhoCayjprC7KMvT3nRA==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/shared": "3.5.6", + "entities": "^4.5.0", + "estree-walker": "^2.0.2", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-dom": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-dom/-/compiler-dom-3.5.6.tgz", + "integrity": "sha512-xRXqxDrIqK8v8sSScpistyYH0qYqxakpsIvqMD2e5sV/PXQ1mTwtXp4k42yHK06KXxKSmitop9e45Ui/3BrTEw==", + "dependencies": { + "@vue/compiler-core": "3.5.6", + "@vue/shared": "3.5.6" + } + }, + "node_modules/@vue/compiler-sfc": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-sfc/-/compiler-sfc-3.5.6.tgz", + "integrity": "sha512-pjWJ8Kj9TDHlbF5LywjVso+BIxCY5wVOLhkEXRhuCHDxPFIeX1zaFefKs8RYoHvkSMqRWt93a0f2gNJVJixHwg==", + "dependencies": { + "@babel/parser": "^7.25.3", + "@vue/compiler-core": "3.5.6", + "@vue/compiler-dom": "3.5.6", + "@vue/compiler-ssr": "3.5.6", + "@vue/shared": "3.5.6", + "estree-walker": "^2.0.2", + "magic-string": "^0.30.11", + "postcss": "^8.4.47", + "source-map-js": "^1.2.0" + } + }, + "node_modules/@vue/compiler-ssr": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/compiler-ssr/-/compiler-ssr-3.5.6.tgz", + "integrity": "sha512-VpWbaZrEOCqnmqjE83xdwegtr5qO/2OPUC6veWgvNqTJ3bYysz6vY3VqMuOijubuUYPRpG3OOKIh9TD0Stxb9A==", + "dependencies": { + "@vue/compiler-dom": "3.5.6", + "@vue/shared": "3.5.6" + } + }, + "node_modules/@vue/compiler-vue2": { + "version": "2.7.16", + "resolved": "https://registry.npmjs.org/@vue/compiler-vue2/-/compiler-vue2-2.7.16.tgz", + "integrity": "sha512-qYC3Psj9S/mfu9uVi5WvNZIzq+xnXMhOwbTFKKDD7b1lhpnn71jXSFdTQ+WsIEk0ONCd7VV2IMm7ONl6tbQ86A==", + "dev": true, + "dependencies": { + "de-indent": "^1.0.2", + "he": "^1.2.0" + } + }, + "node_modules/@vue/devtools-api": { + "version": "6.6.4", + "resolved": "https://registry.npmjs.org/@vue/devtools-api/-/devtools-api-6.6.4.tgz", + "integrity": "sha512-sGhTPMuXqZ1rVOk32RylztWkfXTRhuS7vgAKv0zjqk8gbsHkJ7xfFf+jbySxt7tWObEJwyKaHMikV/WGDiQm8g==" + }, + "node_modules/@vue/eslint-config-airbnb": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-airbnb/-/eslint-config-airbnb-8.0.0.tgz", + "integrity": "sha512-0PGJubVK8+arJC+07xeL7gFLLfr5hxub7UCl+x+bxgvE2qtJodbOXZ27mdt1tAYsgUuhmp3ymn9mNbAIvNGahA==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0", + "eslint-import-resolver-custom-alias": "^1.3.2", + "eslint-import-resolver-node": "^0.3.9", + "eslint-plugin-import": "^2.29.1", + "eslint-plugin-jsx-a11y": "^6.8.0", + "eslint-plugin-react": "^7.33.2", + "eslint-plugin-vuejs-accessibility": "^2.0.0", + "vue-eslint-parser": "^9.3.2" + }, + "peerDependencies": { + "eslint": "^8.2.0", + "eslint-plugin-vue": "^9.2.0" + } + }, + "node_modules/@vue/eslint-config-airbnb-with-typescript": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-airbnb-with-typescript/-/eslint-config-airbnb-with-typescript-8.0.0.tgz", + "integrity": "sha512-gMaApQBRAOebJtI9NyDfic7XhjXGramJXx/PHcOQBUkmpPhDCDeX7N0oQqZKR6cY9la7LDvELfPRs62KJcAtjg==", + "dev": true, + "dependencies": { + "@eslint-types/import": "2.29.0-1", + "@eslint-types/typescript-eslint": "^6.12.0", + "@typescript-eslint/eslint-plugin": "^6.16.0", + "@typescript-eslint/parser": "^6.16.0", + "@vue/eslint-config-airbnb": "^8.0.0", + "eslint-config-airbnb-typescript": "17.1.0", + "eslint-define-config": "^2.0.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-import-resolver-typescript": "^3.6.1", + "eslint-plugin-import": "^2.29.1", + "vue-eslint-parser": "^9.3.2" + }, + "peerDependencies": { + "eslint": "^8.2.0", + "eslint-plugin-vue": "^9.2.0", + "typescript": "*" + } + }, + "node_modules/@vue/eslint-config-typescript": { + "version": "13.0.0", + "resolved": "https://registry.npmjs.org/@vue/eslint-config-typescript/-/eslint-config-typescript-13.0.0.tgz", + "integrity": "sha512-MHh9SncG/sfqjVqjcuFLOLD6Ed4dRAis4HNt0dXASeAuLqIAx4YMB1/m2o4pUKK1vCt8fUvYG8KKX2Ot3BVZTg==", + "dev": true, + "dependencies": { + "@typescript-eslint/eslint-plugin": "^7.1.1", + "@typescript-eslint/parser": "^7.1.1", + "vue-eslint-parser": "^9.3.1" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "peerDependencies": { + "eslint": "^8.56.0", + "eslint-plugin-vue": "^9.0.0", + "typescript": ">=4.7.4" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/eslint-plugin": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/eslint-plugin/-/eslint-plugin-7.18.0.tgz", + "integrity": "sha512-94EQTWZ40mzBc42ATNIBimBEDltSJ9RQHCC8vc/PDbxi4k8dVwUAv4o98dk50M1zB+JGFxp43FP7f8+FP8R6Sw==", + "dev": true, + "dependencies": { + "@eslint-community/regexpp": "^4.10.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/type-utils": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "graphemer": "^1.4.0", + "ignore": "^5.3.1", + "natural-compare": "^1.4.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "@typescript-eslint/parser": "^7.0.0", + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/parser": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/parser/-/parser-7.18.0.tgz", + "integrity": "sha512-4Z+L8I2OqhZV8qA132M4wNL30ypZGYOQVBfMgxDH/K5UX0PNqTu1c6za9ST5r9+tavvHiTWmBnKzpCJ/GlVFtg==", + "dev": true, + "dependencies": { + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/scope-manager": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/scope-manager/-/scope-manager-7.18.0.tgz", + "integrity": "sha512-jjhdIE/FPF2B7Z1uzc6i3oWKbGcHb87Qw7AWj6jmEqNOfDFbJWtjt/XfwCpvNkpGWlcJaog5vTR+VV8+w9JflA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/type-utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/type-utils/-/type-utils-7.18.0.tgz", + "integrity": "sha512-XL0FJXuCLaDuX2sYqZUUSOJ2sG5/i1AAze+axqmLnSkNEVMVYLF+cbwlB2w8D1tinFuSikHmFta+P+HOofrLeA==", + "dev": true, + "dependencies": { + "@typescript-eslint/typescript-estree": "7.18.0", + "@typescript-eslint/utils": "7.18.0", + "debug": "^4.3.4", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/types": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/types/-/types-7.18.0.tgz", + "integrity": "sha512-iZqi+Ds1y4EDYUtlOOC+aUmxnE9xS/yCigkjA7XpTKV6nCBd3Hp/PRGGmdwnfkV2ThMyYldP1wRpm/id99spTQ==", + "dev": true, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/typescript-estree": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/typescript-estree/-/typescript-estree-7.18.0.tgz", + "integrity": "sha512-aP1v/BSPnnyhMHts8cf1qQ6Q1IFwwRvAQGRvBFkWlo3/lH29OXA3Pts+c10nxRxIBrDnoMqzhgdwVe5f2D6OzA==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/visitor-keys": "7.18.0", + "debug": "^4.3.4", + "globby": "^11.1.0", + "is-glob": "^4.0.3", + "minimatch": "^9.0.4", + "semver": "^7.6.0", + "ts-api-utils": "^1.3.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/utils": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/utils/-/utils-7.18.0.tgz", + "integrity": "sha512-kK0/rNa2j74XuHVcoCZxdFBMF+aq/vH83CXAOHieC+2Gis4mF8jJXT5eAfyD3K0sAxtPuwxaIOIOvhwzVDt/kw==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "@typescript-eslint/scope-manager": "7.18.0", + "@typescript-eslint/types": "7.18.0", + "@typescript-eslint/typescript-estree": "7.18.0" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + }, + "peerDependencies": { + "eslint": "^8.56.0" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/@typescript-eslint/visitor-keys": { + "version": "7.18.0", + "resolved": "https://registry.npmjs.org/@typescript-eslint/visitor-keys/-/visitor-keys-7.18.0.tgz", + "integrity": "sha512-cDF0/Gf81QpY3xYyJKDV14Zwdmid5+uuENhjH2EqFaF0ni+yAyq/LzMaIJdhNJXZI7uLzwIlA+V7oWoyn6Curg==", + "dev": true, + "dependencies": { + "@typescript-eslint/types": "7.18.0", + "eslint-visitor-keys": "^3.4.3" + }, + "engines": { + "node": "^18.18.0 || >=20.0.0" + }, + "funding": { + "type": "opencollective", + "url": "https://opencollective.com/typescript-eslint" + } + }, + "node_modules/@vue/eslint-config-typescript/node_modules/minimatch": { + "version": "9.0.5", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.5.tgz", + "integrity": "sha512-G6T0ZX48xgozx7587koeX9Ys2NYy6Gmv//P89sEte9V9whIapMNF4idKxnW2QtCcLiTWlb/wfCabAtAFWhhBow==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/@vue/language-core": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/@vue/language-core/-/language-core-2.1.6.tgz", + "integrity": "sha512-MW569cSky9R/ooKMh6xa2g1D0AtRKbL56k83dzus/bx//RDJk24RHWkMzbAlXjMdDNyxAaagKPRquBIxkxlCkg==", + "dev": true, + "dependencies": { + "@volar/language-core": "~2.4.1", + "@vue/compiler-dom": "^3.4.0", + "@vue/compiler-vue2": "^2.7.16", + "@vue/shared": "^3.4.0", + "computeds": "^0.0.1", + "minimatch": "^9.0.3", + "muggle-string": "^0.4.1", + "path-browserify": "^1.0.1" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/@vue/reactivity": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/reactivity/-/reactivity-3.5.6.tgz", + "integrity": "sha512-shZ+KtBoHna5GyUxWfoFVBCVd7k56m6lGhk5e+J9AKjheHF6yob5eukssHRI+rzvHBiU1sWs/1ZhNbLExc5oYQ==", + "dependencies": { + "@vue/shared": "3.5.6" + } + }, + "node_modules/@vue/runtime-core": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/runtime-core/-/runtime-core-3.5.6.tgz", + "integrity": "sha512-FpFULR6+c2lI+m1fIGONLDqPQO34jxV8g6A4wBOgne8eSRHP6PQL27+kWFIx5wNhhjkO7B4rgtsHAmWv7qKvbg==", + "dependencies": { + "@vue/reactivity": "3.5.6", + "@vue/shared": "3.5.6" + } + }, + "node_modules/@vue/runtime-dom": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/runtime-dom/-/runtime-dom-3.5.6.tgz", + "integrity": "sha512-SDPseWre45G38ENH2zXRAHL1dw/rr5qp91lS4lt/nHvMr0MhsbCbihGAWLXNB/6VfFOJe2O+RBRkXU+CJF7/sw==", + "dependencies": { + "@vue/reactivity": "3.5.6", + "@vue/runtime-core": "3.5.6", + "@vue/shared": "3.5.6", + "csstype": "^3.1.3" + } + }, + "node_modules/@vue/server-renderer": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/server-renderer/-/server-renderer-3.5.6.tgz", + "integrity": "sha512-zivnxQnOnwEXVaT9CstJ64rZFXMS5ZkKxCjDQKiMSvUhXRzFLWZVbaBiNF4HGDqGNNsTgmjcCSmU6TB/0OOxLA==", + "dependencies": { + "@vue/compiler-ssr": "3.5.6", + "@vue/shared": "3.5.6" + }, + "peerDependencies": { + "vue": "3.5.6" + } + }, + "node_modules/@vue/shared": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/@vue/shared/-/shared-3.5.6.tgz", + "integrity": "sha512-eidH0HInnL39z6wAt6SFIwBrvGOpDWsDxlw3rCgo1B+CQ1781WzQUSU3YjxgdkcJo9Q8S6LmXTkvI+cLHGkQfA==" + }, + "node_modules/@vuetify/loader-shared": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/@vuetify/loader-shared/-/loader-shared-2.0.3.tgz", + "integrity": "sha512-Ss3GC7eJYkp2SF6xVzsT7FAruEmdihmn4OCk2+UocREerlXKWgOKKzTN5PN3ZVN5q05jHHrsNhTuWbhN61Bpdg==", + "devOptional": true, + "dependencies": { + "upath": "^2.0.1" + }, + "peerDependencies": { + "vue": "^3.0.0", + "vuetify": "^3.0.0" + } + }, + "node_modules/acorn": { + "version": "8.12.1", + "resolved": "https://registry.npmjs.org/acorn/-/acorn-8.12.1.tgz", + "integrity": "sha512-tcpGyI9zbizT9JbV6oYE477V6mTlXvvi0T0G3SNIYE2apm/G5huBa1+K89VGeovbg+jycCrfhl3ADxErOuO6Jg==", + "dev": true, + "bin": { + "acorn": "bin/acorn" + }, + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/acorn-jsx": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/acorn-jsx/-/acorn-jsx-5.3.2.tgz", + "integrity": "sha512-rq9s+JNhf0IChjtDXxllJ7g41oZk5SlXtp0LHwyA5cejwn7vKmKp4pPri6YEePv2PU65sAsegbXtIinmDFDXgQ==", + "dev": true, + "peerDependencies": { + "acorn": "^6.0.0 || ^7.0.0 || ^8.0.0" + } + }, + "node_modules/ajv": { + "version": "6.12.6", + "resolved": "https://registry.npmjs.org/ajv/-/ajv-6.12.6.tgz", + "integrity": "sha512-j3fVLgvTo527anyYyJOGTYJbG+vnnQYvE0m5mmkc1TK+nxAppkCLMIL0aZ4dblVCNoGShhm+kzE4ZUykBoMg4g==", + "dev": true, + "dependencies": { + "fast-deep-equal": "^3.1.1", + "fast-json-stable-stringify": "^2.0.0", + "json-schema-traverse": "^0.4.1", + "uri-js": "^4.2.2" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/epoberezkin" + } + }, + "node_modules/ansi-escapes": { + "version": "4.3.2", + "resolved": "https://registry.npmjs.org/ansi-escapes/-/ansi-escapes-4.3.2.tgz", + "integrity": "sha512-gKXj5ALrKWQLsYG9jlTRmR/xKluxHV+Z9QEwNIgCfM1/uwPMCuzVVnh5mwTd+OuBZcwSIMbqssNWRm1lE51QaQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.21.3" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-escapes/node_modules/type-fest": { + "version": "0.21.3", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.21.3.tgz", + "integrity": "sha512-t0rzBq87m3fVcduHDUFhKmyyX+9eo6WQjZvf51Ea/M0Q7+T374Jp1aUiyUl0GKxp8M/OETVHSDvmkyPgvX+X2w==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/ansi-regex": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/ansi-regex/-/ansi-regex-5.0.1.tgz", + "integrity": "sha512-quJQXlTSUGL2LH9SUXo8VwsY4soanhgo6LNSm84E1LBcE8s3O0wpdiRzyR9z/ZZJMlMWv37qOOb9pdJlMUEKFQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/ansi-styles": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-4.3.0.tgz", + "integrity": "sha512-zbB9rCJAT1rbjiVDb2hqKFHNYLxgtk8NURxZ3IZwD3F6NtxbXZQCnnSi1Lkx+IDohdPlFp222wVALIheZJQSEg==", + "dev": true, + "dependencies": { + "color-convert": "^2.0.1" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/anymatch": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/anymatch/-/anymatch-3.1.3.tgz", + "integrity": "sha512-KMReFUr0B4t+D+OBkjR3KYqvocp2XaSzO55UcB6mgQMd3KbcE+mWTyvVV7D/zsdEbNnV6acZUutkiHQXvTr1Rw==", + "dev": true, + "dependencies": { + "normalize-path": "^3.0.0", + "picomatch": "^2.0.4" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/argparse": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/argparse/-/argparse-2.0.1.tgz", + "integrity": "sha512-8+9WqebbFzpX9OR+Wa6O29asIogeRMzcGtAINdpMHHyAg10f05aSFVBbcEqGf/PXw1EjAZ+q2/bEBg3DvurK3Q==", + "dev": true + }, + "node_modules/aria-query": { + "version": "5.1.3", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.1.3.tgz", + "integrity": "sha512-R5iJ5lkuHybztUfuOAznmboyjWq8O6sqNqtK7CLOqdydi54VNbORp49mb14KbWgG1QD3JFO9hJdZ+y4KutfdOQ==", + "dev": true, + "dependencies": { + "deep-equal": "^2.0.5" + } + }, + "node_modules/arr-union": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/arr-union/-/arr-union-3.1.0.tgz", + "integrity": "sha512-sKpyeERZ02v1FeCZT8lrfJq5u6goHCtpTAzPwJYe7c8SPFOboNjNg1vz2L4VTn9T4PQxEx13TbXLmYUcS6Ug7Q==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/array-buffer-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/array-buffer-byte-length/-/array-buffer-byte-length-1.0.1.tgz", + "integrity": "sha512-ahC5W1xgou+KTXix4sAO8Ki12Q+jf4i0+tmk3sC+zgcynshkHxzpXdImBehiUYKKKDwvfFiJl1tZt6ewscS1Mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "is-array-buffer": "^3.0.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-includes": { + "version": "3.1.8", + "resolved": "https://registry.npmjs.org/array-includes/-/array-includes-3.1.8.tgz", + "integrity": "sha512-itaWrbYbqpGXkGhZPGUulwnhVf5Hpy1xiCFsGqyIGglbBxmG5vSjxQen3/WGOjPpNEv1RtBLKxbmVXm8HpJStQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "is-string": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array-union": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/array-union/-/array-union-2.1.0.tgz", + "integrity": "sha512-HGyxoOTYUyCM6stUe6EJgnd4EoewAI7zMdfqO+kGjnlZmBDz/cR5pf8r/cR4Wq60sL/p0IkcjUEEPwS3GFrIyw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/array.prototype.findlast": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlast/-/array.prototype.findlast-1.2.5.tgz", + "integrity": "sha512-CVvd6FHg1Z3POpBLxO6E6zr+rSKEQ9L6rZHAaY7lLfhKsWYUBBOuMs0e9o24oopj6H+geRCX0YJ+TJLBK2eHyQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.findlastindex": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/array.prototype.findlastindex/-/array.prototype.findlastindex-1.2.5.tgz", + "integrity": "sha512-zfETvRFA8o7EiNn++N5f/kaCw221hrpGsDmcpndVupkPzEc1Wuf3VgC0qby1BbHs7f5DVYjgtEU2LLh5bqeGfQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flat": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flat/-/array.prototype.flat-1.3.2.tgz", + "integrity": "sha512-djYB+Zx2vLewY8RWlNCUdHjDXs2XOgm602S9E7P/UpHgfeHL00cRiIF+IN/G/aUJ7kGPb6yO/ErDI5V2s8iycA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.flatmap": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/array.prototype.flatmap/-/array.prototype.flatmap-1.3.2.tgz", + "integrity": "sha512-Ewyx0c9PmpcsByhSW4r+9zDU7sGjFc86qf/kKtuSCRdhfbk0SNLLkaT5qvcHnRGgc5NP/ly/y+qkXkqONX54CQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "es-shim-unscopables": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/array.prototype.tosorted": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/array.prototype.tosorted/-/array.prototype.tosorted-1.1.4.tgz", + "integrity": "sha512-p6Fx8B7b7ZhL/gmUsAy0D15WhvDccw3mnGNbZpi3pmeJdxtWsj2jEaI4Y6oo3XiHfzuSgPwKc04MYt6KgvC/wA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-shim-unscopables": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/arraybuffer.prototype.slice": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/arraybuffer.prototype.slice/-/arraybuffer.prototype.slice-1.0.3.tgz", + "integrity": "sha512-bMxMKAjg13EBSVscxTaYA4mRc5t1UAXa2kXiGTNfZ079HIWXEkKmkgFrh/nJqamaLSrXO5H4WFFkPEaLJWbs3A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "es-abstract": "^1.22.3", + "es-errors": "^1.2.1", + "get-intrinsic": "^1.2.3", + "is-array-buffer": "^3.0.4", + "is-shared-array-buffer": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/assign-symbols": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/assign-symbols/-/assign-symbols-1.0.0.tgz", + "integrity": "sha512-Q+JC7Whu8HhmTdBph/Tq59IoRtoy6KAm5zzPv00WdujX82lbAL8K7WVjne7vdCsAmbF4AYaDOPyO3k0kl8qIrw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ast-types-flow": { + "version": "0.0.8", + "resolved": "https://registry.npmjs.org/ast-types-flow/-/ast-types-flow-0.0.8.tgz", + "integrity": "sha512-OH/2E5Fg20h2aPrbe+QL8JZQFko0YZaF+j4mnQ7BGhfavO7OpSLa8a0y9sBwomHdSbkhTS8TQNayBfnW5DwbvQ==", + "dev": true + }, + "node_modules/asynckit": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/asynckit/-/asynckit-0.4.0.tgz", + "integrity": "sha512-Oei9OH4tRh0YqU3GxhX79dM/mwVgvbZJaSNaRk+bshkj0S5cfHcgYakreBjrHwatXKbz+IoIdYLxrKim2MjW0Q==" + }, + "node_modules/available-typed-arrays": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/available-typed-arrays/-/available-typed-arrays-1.0.7.tgz", + "integrity": "sha512-wvUjBtSGN7+7SjNpq/9M2Tg350UZD3q62IFZLbRAR1bSMlCo1ZaeW+BJ+D090e4hIIZLBcTDWe4Mh4jvUDajzQ==", + "dev": true, + "dependencies": { + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/axe-core": { + "version": "4.10.0", + "resolved": "https://registry.npmjs.org/axe-core/-/axe-core-4.10.0.tgz", + "integrity": "sha512-Mr2ZakwQ7XUAjp7pAwQWRhhK8mQQ6JAaNWSjmjxil0R8BPioMtQsTLOolGYkji1rcL++3dCqZA3zWqpT+9Ew6g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/axios": { + "version": "1.7.7", + "resolved": "https://registry.npmjs.org/axios/-/axios-1.7.7.tgz", + "integrity": "sha512-S4kL7XrjgBmvdGut0sN3yJxqYzrDOnivkBiN0OFs6hLiUam3UPvswUo0kqGyhqUZGEOytHyumEdXsAkgCOUf3Q==", + "dependencies": { + "follow-redirects": "^1.15.6", + "form-data": "^4.0.0", + "proxy-from-env": "^1.1.0" + } + }, + "node_modules/axobject-query": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/axobject-query/-/axobject-query-4.1.0.tgz", + "integrity": "sha512-qIj0G9wZbMGNLjLmg1PT6v2mE9AH2zlnADJD/2tC6E00hgmhUOfEB6greHPAfLRSufHqROIUTkw6E+M3lH0PTQ==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/babel-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/babel-jest/-/babel-jest-29.7.0.tgz", + "integrity": "sha512-BrvGY3xZSwEcCzKvKsCi2GgHqDqsYkOP4/by5xCgIwGXQxIEh+8ew3gmrE1y7XRR6LHZIj6yLYnUi/mm2KXKBg==", + "dev": true, + "dependencies": { + "@jest/transform": "^29.7.0", + "@types/babel__core": "^7.1.14", + "babel-plugin-istanbul": "^6.1.1", + "babel-preset-jest": "^29.6.3", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.8.0" + } + }, + "node_modules/babel-plugin-istanbul": { + "version": "6.1.1", + "resolved": "https://registry.npmjs.org/babel-plugin-istanbul/-/babel-plugin-istanbul-6.1.1.tgz", + "integrity": "sha512-Y1IQok9821cC9onCx5otgFfRm7Lm+I+wwxOx738M/WLPZ9Q42m4IG5W0FNX8WLL2gYMZo3JkuXIH2DOpWM+qwA==", + "dev": true, + "dependencies": { + "@babel/helper-plugin-utils": "^7.0.0", + "@istanbuljs/load-nyc-config": "^1.0.0", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-instrument": "^5.0.4", + "test-exclude": "^6.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/istanbul-lib-instrument": { + "version": "5.2.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-5.2.1.tgz", + "integrity": "sha512-pzqtp31nLv/XFOzXGuvhCb8qhjmTVo5vjVk19XE4CRlSWz0KoeJ3bw9XsA7nOp9YBf4qHjwBxkDzKcME/J29Yg==", + "dev": true, + "dependencies": { + "@babel/core": "^7.12.3", + "@babel/parser": "^7.14.7", + "@istanbuljs/schema": "^0.1.2", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^6.3.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/babel-plugin-istanbul/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/babel-plugin-jest-hoist": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-plugin-jest-hoist/-/babel-plugin-jest-hoist-29.6.3.tgz", + "integrity": "sha512-ESAc/RJvGTFEzRwOTT4+lNDk/GNHMkKbNzsvT0qKRfDyyYTskxB5rnU2njIDYVxXCBHHEI1c0YwHob3WaYujOg==", + "dev": true, + "dependencies": { + "@babel/template": "^7.3.3", + "@babel/types": "^7.3.3", + "@types/babel__core": "^7.1.14", + "@types/babel__traverse": "^7.0.6" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/babel-preset-current-node-syntax": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/babel-preset-current-node-syntax/-/babel-preset-current-node-syntax-1.1.0.tgz", + "integrity": "sha512-ldYss8SbBlWva1bs28q78Ju5Zq1F+8BrqBZZ0VFhLBvhh6lCpC2o3gDJi/5DRLs9FgYZCnmPYIVFU4lRXCkyUw==", + "dev": true, + "dependencies": { + "@babel/plugin-syntax-async-generators": "^7.8.4", + "@babel/plugin-syntax-bigint": "^7.8.3", + "@babel/plugin-syntax-class-properties": "^7.12.13", + "@babel/plugin-syntax-class-static-block": "^7.14.5", + "@babel/plugin-syntax-import-attributes": "^7.24.7", + "@babel/plugin-syntax-import-meta": "^7.10.4", + "@babel/plugin-syntax-json-strings": "^7.8.3", + "@babel/plugin-syntax-logical-assignment-operators": "^7.10.4", + "@babel/plugin-syntax-nullish-coalescing-operator": "^7.8.3", + "@babel/plugin-syntax-numeric-separator": "^7.10.4", + "@babel/plugin-syntax-object-rest-spread": "^7.8.3", + "@babel/plugin-syntax-optional-catch-binding": "^7.8.3", + "@babel/plugin-syntax-optional-chaining": "^7.8.3", + "@babel/plugin-syntax-private-property-in-object": "^7.14.5", + "@babel/plugin-syntax-top-level-await": "^7.14.5" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/babel-preset-jest": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/babel-preset-jest/-/babel-preset-jest-29.6.3.tgz", + "integrity": "sha512-0B3bhxR6snWXJZtR/RliHTDPRgn1sNHOR0yVtq/IiQFyuOVjFS+wuio/R4gSNkyYmKmJB4wGZv2NZanmKmTnNA==", + "dev": true, + "dependencies": { + "babel-plugin-jest-hoist": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@babel/core": "^7.0.0" + } + }, + "node_modules/balanced-match": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/balanced-match/-/balanced-match-1.0.2.tgz", + "integrity": "sha512-3oSeUO0TMV67hN1AmbXsK4yaqU7tjiHlbxRDZOpH0KW9+CeX4bRAaX0Anxt0tx2MrpRpWwQaPwIlISEJhYU5Pw==", + "dev": true + }, + "node_modules/base64-js": { + "version": "1.5.1", + "resolved": "https://registry.npmjs.org/base64-js/-/base64-js-1.5.1.tgz", + "integrity": "sha512-AKpaYlHn8t4SVbOHCy+b5+KKgvR4vrsD8vbvrbiQJps7fKDTkjkDry6ji0rUJjC0kzbNePLwzxq8iypo41qeWA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/boolbase": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/boolbase/-/boolbase-1.0.0.tgz", + "integrity": "sha512-JZOSA7Mo9sNGB8+UjSgzdLtokWAky1zbztM3WRLCbZ70/3cTANmQmOdR7y2g+J0e2WXywy1yS468tY+IruqEww==", + "dev": true + }, + "node_modules/brace-expansion": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-2.0.1.tgz", + "integrity": "sha512-XnAIvQ8eM+kC6aULx6wuQiwVsnzsi9d3WxzV3FpWTGA19F621kwdbsAcFKXgKUHZWsy+mY6iL1sHTxWEFCytDA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0" + } + }, + "node_modules/braces": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/braces/-/braces-3.0.3.tgz", + "integrity": "sha512-yQbXgO/OSZVD2IsiLlro+7Hf6Q18EJrKSEsdoMzKePKXct3gvD8oLcOQdIzGupr5Fj+EDe8gO/lxc1BzfMpxvA==", + "dev": true, + "dependencies": { + "fill-range": "^7.1.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/browserslist": { + "version": "4.23.3", + "resolved": "https://registry.npmjs.org/browserslist/-/browserslist-4.23.3.tgz", + "integrity": "sha512-btwCFJVjI4YWDNfau8RhZ+B1Q/VLoUITrm3RlP6y1tYGWIOa+InuYiRGXUBXo8nA1qKmHMyLB/iVQg5TT4eFoA==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "caniuse-lite": "^1.0.30001646", + "electron-to-chromium": "^1.5.4", + "node-releases": "^2.0.18", + "update-browserslist-db": "^1.1.0" + }, + "bin": { + "browserslist": "cli.js" + }, + "engines": { + "node": "^6 || ^7 || ^8 || ^9 || ^10 || ^11 || ^12 || >=13.7" + } + }, + "node_modules/bser": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/bser/-/bser-2.1.1.tgz", + "integrity": "sha512-gQxTNE/GAfIIrmHLUE3oJyp5FO6HRBfhjnw4/wMmA63ZGDJnWBmgY/lyQBpnDUkGmAhbSe39tx2d/iTOAfglwQ==", + "dev": true, + "dependencies": { + "node-int64": "^0.4.0" + } + }, + "node_modules/buffer-from": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/buffer-from/-/buffer-from-1.1.2.tgz", + "integrity": "sha512-E+XQCRwSbaaiChtv6k6Dwgc+bx+Bs6vuKJHHl5kox/BaKbhiXzqQOwK4cO22yElGp2OCmjwVhT3HmxgyPGnJfQ==", + "dev": true + }, + "node_modules/bytewise": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/bytewise/-/bytewise-1.1.0.tgz", + "integrity": "sha512-rHuuseJ9iQ0na6UDhnrRVDh8YnWVlU6xM3VH6q/+yHDeUH2zIhUzP+2/h3LIrhLDBtTqzWpE3p3tP/boefskKQ==", + "dependencies": { + "bytewise-core": "^1.2.2", + "typewise": "^1.0.3" + } + }, + "node_modules/bytewise-core": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/bytewise-core/-/bytewise-core-1.2.3.tgz", + "integrity": "sha512-nZD//kc78OOxeYtRlVk8/zXqTB4gf/nlguL1ggWA8FuchMyOxcyHR4QPQZMUmA7czC+YnaBrPUCubqAWe50DaA==", + "dependencies": { + "typewise-core": "^1.2" + } + }, + "node_modules/call-bind": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/call-bind/-/call-bind-1.0.7.tgz", + "integrity": "sha512-GHTSNSYICQ7scH7sZ+M2rFopRoLh8t2bLSW6BbgrtLsahOIB5iyAVJf9GjWK3cYTDaMj4XdBpM1cA6pIS0Kv2w==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "set-function-length": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/callsites": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/callsites/-/callsites-3.1.0.tgz", + "integrity": "sha512-P8BjAsXvZS+VIDUI11hHCQEv74YT67YUi5JJFNWIqL235sBmjX4+qx9Muvls5ivyNENctx46xQLQ3aTuE7ssaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/camelcase": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-5.3.1.tgz", + "integrity": "sha512-L28STB170nwWS63UjtlEOE3dldQApaJXZkOI1uMFfzf3rRuPegHaHesyee+YxQ+W6SvRDQV6UrdOdRiR153wJg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/caniuse-lite": { + "version": "1.0.30001660", + "resolved": "https://registry.npmjs.org/caniuse-lite/-/caniuse-lite-1.0.30001660.tgz", + "integrity": "sha512-GacvNTTuATm26qC74pt+ad1fW15mlQ/zuTzzY1ZoIzECTP8HURDfF43kNxPgf7H1jmelCBQTTbBNxdSXOA7Bqg==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/caniuse-lite" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ] + }, + "node_modules/chalk": { + "version": "4.1.2", + "resolved": "https://registry.npmjs.org/chalk/-/chalk-4.1.2.tgz", + "integrity": "sha512-oKnbhFyRIXpUuez8iBMmyEa4nbj4IOQyuhc/wy9kY7/WVPcwIO9VA668Pu8RkO7+0G76SLROeyw9CpQ061i4mA==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.1.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/chalk?sponsor=1" + } + }, + "node_modules/char-regex": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/char-regex/-/char-regex-1.0.2.tgz", + "integrity": "sha512-kWWXztvZ5SBQV+eRgKFeh8q5sLuZY2+8WUIzlxWVTg+oGwY14qylx1KbKzHd8P6ZYkAg0xyIDU9JMHhyJMZ1jw==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/cheap-ruler": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/cheap-ruler/-/cheap-ruler-4.0.0.tgz", + "integrity": "sha512-0BJa8f4t141BYKQyn9NSQt1PguFQXMXwZiA5shfoaBYHAb2fFk2RAX+tiWMoQU+Agtzt3mdt0JtuyshAXqZ+Vw==", + "dev": true + }, + "node_modules/ci-info": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/ci-info/-/ci-info-3.9.0.tgz", + "integrity": "sha512-NIxF55hv4nSqQswkAeiOi1r83xy8JldOFDTWiug55KBu9Jnblncd2U6ViHmYgHf01TPZS77NJBhBMKdWj9HQMQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/sibiraj-s" + } + ], + "engines": { + "node": ">=8" + } + }, + "node_modules/cjs-module-lexer": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/cjs-module-lexer/-/cjs-module-lexer-1.4.1.tgz", + "integrity": "sha512-cuSVIHi9/9E/+821Qjdvngor+xpnlwnuwIyZOaLmHBVdXL+gP+I6QQB9VkO7RI77YIcTV+S1W9AreJ5eN63JBA==", + "dev": true + }, + "node_modules/cliui": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/cliui/-/cliui-8.0.1.tgz", + "integrity": "sha512-BSeNnyus75C4//NQ9gQt1/csTXyo/8Sb+afLAkzAptFuMsod9HFokGNudZpi/oQV73hnVK+sR+5PVRMd+Dr7YQ==", + "dev": true, + "dependencies": { + "string-width": "^4.2.0", + "strip-ansi": "^6.0.1", + "wrap-ansi": "^7.0.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/co": { + "version": "4.6.0", + "resolved": "https://registry.npmjs.org/co/-/co-4.6.0.tgz", + "integrity": "sha512-QVb0dM5HvG+uaxitm8wONl7jltx8dqhfU33DcqtOZcLSVIKSDDLDi7+0LbAKiyI8hD9u42m2YxXSkMGWThaecQ==", + "dev": true, + "engines": { + "iojs": ">= 1.0.0", + "node": ">= 0.12.0" + } + }, + "node_modules/collect-v8-coverage": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/collect-v8-coverage/-/collect-v8-coverage-1.0.2.tgz", + "integrity": "sha512-lHl4d5/ONEbLlJvaJNtsF/Lz+WvB07u2ycqTYbdrq7UypDXailES4valYb2eWiJFxZlVmpGekfqoxQhzyFdT4Q==", + "dev": true + }, + "node_modules/color-convert": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/color-convert/-/color-convert-2.0.1.tgz", + "integrity": "sha512-RRECPsj7iu/xb5oKYcsFHSppFNnsj/52OVTRKb4zP5onXwVF3zVmmToNcOfGC+CRDpfK/U584fMg38ZHCaElKQ==", + "dev": true, + "dependencies": { + "color-name": "~1.1.4" + }, + "engines": { + "node": ">=7.0.0" + } + }, + "node_modules/color-name": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/color-name/-/color-name-1.1.4.tgz", + "integrity": "sha512-dOy+3AuW3a2wNbZHIuMZpTcgjGuLU/uBL/ubcZF9OXbDo8ff4O8yVp5Bf0efS8uEoYo5q4Fx7dY9OgQGXgAsQA==", + "dev": true + }, + "node_modules/combined-stream": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/combined-stream/-/combined-stream-1.0.8.tgz", + "integrity": "sha512-FQN4MRfuJeHf7cBbBMJFXhKSDq+2kAArBlmRBvcvFE5BB1HZKXtSFASDhdlz9zOYwxh8lDdnvmMOe/+5cdoEdg==", + "dependencies": { + "delayed-stream": "~1.0.0" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/commander": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/commander/-/commander-7.2.0.tgz", + "integrity": "sha512-QrWXB+ZQSVPmIWIhtEO9H+gwHaMGYiF5ChvoJ+K9ZGHG/sVsa6yiesAD1GC/x46sET00Xlwo1u49RVVVzvcSkw==", + "engines": { + "node": ">= 10" + } + }, + "node_modules/computeds": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/computeds/-/computeds-0.0.1.tgz", + "integrity": "sha512-7CEBgcMjVmitjYo5q8JTJVra6X5mQ20uTThdK+0kR7UEaDrAWEQcRiBtWJzga4eRpP6afNwwLsX2SET2JhVB1Q==", + "dev": true + }, + "node_modules/concat-map": { + "version": "0.0.1", + "resolved": "https://registry.npmjs.org/concat-map/-/concat-map-0.0.1.tgz", + "integrity": "sha512-/Srv4dswyQNBfohGpz9o6Yb3Gz3SrUDqBH5rTuhGR7ahtlbYKnVxw2bCFMRljaA7EXHaXZ8wsHdodFvbkhKmqg==", + "dev": true + }, + "node_modules/concaveman": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/concaveman/-/concaveman-1.2.1.tgz", + "integrity": "sha512-PwZYKaM/ckQSa8peP5JpVr7IMJ4Nn/MHIaWUjP4be+KoZ7Botgs8seAZGpmaOM+UZXawcdYRao/px9ycrCihHw==", + "dependencies": { + "point-in-polygon": "^1.1.0", + "rbush": "^3.0.1", + "robust-predicates": "^2.0.4", + "tinyqueue": "^2.0.3" + } + }, + "node_modules/concaveman/node_modules/robust-predicates": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-2.0.4.tgz", + "integrity": "sha512-l4NwboJM74Ilm4VKfbAtFeGq7aEjWL+5kVFcmgFA2MrdnQWx9iE/tUGvxY5HyMI7o/WpSIUFLbC5fbeaHgSCYg==" + }, + "node_modules/concaveman/node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, + "node_modules/confusing-browser-globals": { + "version": "1.0.11", + "resolved": "https://registry.npmjs.org/confusing-browser-globals/-/confusing-browser-globals-1.0.11.tgz", + "integrity": "sha512-JsPKdmh8ZkmnHxDk55FZ1TqVLvEQTvoByJZRN9jzI0UjxK/QgAmsphz7PGtqgPieQZ/CQcHWXCR7ATDNhGe+YA==", + "dev": true + }, + "node_modules/convert-source-map": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/convert-source-map/-/convert-source-map-2.0.0.tgz", + "integrity": "sha512-Kvp459HrV2FEJ1CAsi1Ku+MY3kasH19TFykTz2xWmMeq6bk2NU3XXvfJ+Q61m0xktWwt+1HSYf3JZsTms3aRJg==", + "dev": true + }, + "node_modules/create-jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/create-jest/-/create-jest-29.7.0.tgz", + "integrity": "sha512-Adz2bdH0Vq3F53KEMJOoftQFutWCukm6J24wbPWRO4k1kMY7gS7ds/uoJkNuV8wDCtWWnuwGcJwpWcih+zEW1Q==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "exit": "^0.1.2", + "graceful-fs": "^4.2.9", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "prompts": "^2.0.1" + }, + "bin": { + "create-jest": "bin/create-jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/cross-spawn": { + "version": "7.0.6", + "resolved": "https://registry.npmjs.org/cross-spawn/-/cross-spawn-7.0.6.tgz", + "integrity": "sha512-uV2QOWP2nWzsy2aMp8aRibhi9dlzF5Hgh5SHaB9OiTGEyDTiJJyx0uy51QXdyWbtAHNua4XJzUKca3OzKUd3vA==", + "dev": true, + "dependencies": { + "path-key": "^3.1.0", + "shebang-command": "^2.0.0", + "which": "^2.0.1" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/csscolorparser": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/csscolorparser/-/csscolorparser-1.0.3.tgz", + "integrity": "sha512-umPSgYwZkdFoUrH5hIq5kf0wPSXiro51nPw0j2K/c83KflkPSTBGMz6NJvMB+07VlL0y7VPo6QJcDjcgKTTm3w==", + "dev": true + }, + "node_modules/cssesc": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/cssesc/-/cssesc-3.0.0.tgz", + "integrity": "sha512-/Tb/JcjK111nNScGob5MNtsntNM1aCNUDipB/TkwZFhyDrrE47SOx/18wF2bbjgc3ZzCSKW1T5nt5EbFoAz/Vg==", + "dev": true, + "bin": { + "cssesc": "bin/cssesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/csstype": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/csstype/-/csstype-3.1.3.tgz", + "integrity": "sha512-M1uQkMl8rQK/szD0LNhtqxIPLpimGm8sOBwU7lLnCpSbTyY3yeU1Vc7l4KT5zT4s/yOxHH5O7tIuuLOCnLADRw==" + }, + "node_modules/d3": { + "version": "7.9.0", + "resolved": "https://registry.npmjs.org/d3/-/d3-7.9.0.tgz", + "integrity": "sha512-e1U46jVP+w7Iut8Jt8ri1YsPOvFpg46k+K8TpCb0P+zjCkjkPnV7WzfDJzMHy1LnA+wj5pLT1wjO901gLXeEhA==", + "dependencies": { + "d3-array": "3", + "d3-axis": "3", + "d3-brush": "3", + "d3-chord": "3", + "d3-color": "3", + "d3-contour": "4", + "d3-delaunay": "6", + "d3-dispatch": "3", + "d3-drag": "3", + "d3-dsv": "3", + "d3-ease": "3", + "d3-fetch": "3", + "d3-force": "3", + "d3-format": "3", + "d3-geo": "3", + "d3-hierarchy": "3", + "d3-interpolate": "3", + "d3-path": "3", + "d3-polygon": "3", + "d3-quadtree": "3", + "d3-random": "3", + "d3-scale": "4", + "d3-scale-chromatic": "3", + "d3-selection": "3", + "d3-shape": "3", + "d3-time": "3", + "d3-time-format": "4", + "d3-timer": "3", + "d3-transition": "3", + "d3-zoom": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-array": { + "version": "3.2.4", + "resolved": "https://registry.npmjs.org/d3-array/-/d3-array-3.2.4.tgz", + "integrity": "sha512-tdQAmyA18i4J7wprpYq8ClcxZy3SC31QMeByyCFyRt7BVHdREQZ5lpzoe5mFEYZUWe+oq8HBvk9JjpibyEV4Jg==", + "dependencies": { + "internmap": "1 - 2" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-axis": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-axis/-/d3-axis-3.0.0.tgz", + "integrity": "sha512-IH5tgjV4jE/GhHkRV0HiVYPDtvfjHQlQfJHs0usq7M30XcSBvOotpmH1IgkcXsO/5gEQZD43B//fc7SRT5S+xw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-brush": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-brush/-/d3-brush-3.0.0.tgz", + "integrity": "sha512-ALnjWlVYkXsVIGlOsuWH1+3udkYFI48Ljihfnh8FZPF2QS9o+PzGLBslO0PjzVoHLZ2KCVgAM8NVkXPJB2aNnQ==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "3", + "d3-transition": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-chord": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-chord/-/d3-chord-3.0.1.tgz", + "integrity": "sha512-VE5S6TNa+j8msksl7HwjxMHDM2yNK3XCkusIlpX5kwauBfXuyLAtNg9jCp/iHH61tgI4sb6R/EIMWCqEIdjT/g==", + "dependencies": { + "d3-path": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-color": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-color/-/d3-color-3.1.0.tgz", + "integrity": "sha512-zg/chbXyeBtMQ1LbD/WSoW2DpC3I0mpmPdW+ynRTj/x2DAWYrIY7qeZIHidozwV24m4iavr15lNwIwLxRmOxhA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-contour": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-contour/-/d3-contour-4.0.2.tgz", + "integrity": "sha512-4EzFTRIikzs47RGmdxbeUvLWtGedDUNkTcmzoeyg4sP/dvCexO47AaQL7VKy/gul85TOxw+IBgA8US2xwbToNA==", + "dependencies": { + "d3-array": "^3.2.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-delaunay": { + "version": "6.0.4", + "resolved": "https://registry.npmjs.org/d3-delaunay/-/d3-delaunay-6.0.4.tgz", + "integrity": "sha512-mdjtIZ1XLAM8bm/hx3WwjfHt6Sggek7qH043O8KEjDXN40xi3vx/6pYSVTwLjEgiXQTbvaouWKynLBiUZ6SK6A==", + "dependencies": { + "delaunator": "5" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dispatch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dispatch/-/d3-dispatch-3.0.1.tgz", + "integrity": "sha512-rzUyPU/S7rwUflMyLc1ETDeBj0NRuHKKAcvukozwhshr6g6c5d8zh4c2gQjY2bZ0dXeGLWc1PF174P2tVvKhfg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-drag": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-drag/-/d3-drag-3.0.0.tgz", + "integrity": "sha512-pWbUJLdETVA8lQNJecMxoXfH6x+mO2UQo8rSmZ+QqxcbyA3hfeprFgIT//HW2nlHChWeIIMwS2Fq+gEARkhTkg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-selection": "3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-dsv": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-dsv/-/d3-dsv-3.0.1.tgz", + "integrity": "sha512-UG6OvdI5afDIFP9w4G0mNq50dSOsXHJaRE8arAS5o9ApWnIElp8GZw1Dun8vP8OyHOZ/QJUKUJwxiiCCnUwm+Q==", + "dependencies": { + "commander": "7", + "iconv-lite": "0.6", + "rw": "1" + }, + "bin": { + "csv2json": "bin/dsv2json.js", + "csv2tsv": "bin/dsv2dsv.js", + "dsv2dsv": "bin/dsv2dsv.js", + "dsv2json": "bin/dsv2json.js", + "json2csv": "bin/json2dsv.js", + "json2dsv": "bin/json2dsv.js", + "json2tsv": "bin/json2dsv.js", + "tsv2csv": "bin/dsv2dsv.js", + "tsv2json": "bin/dsv2json.js" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-ease": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-ease/-/d3-ease-3.0.1.tgz", + "integrity": "sha512-wR/XK3D3XcLIZwpbvQwQ5fK+8Ykds1ip7A2Txe0yxncXSdq1L9skcG7blcedkOX+ZcgxGAmLX1FrRGbADwzi0w==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-fetch": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-fetch/-/d3-fetch-3.0.1.tgz", + "integrity": "sha512-kpkQIM20n3oLVBKGg6oHrUchHM3xODkTzjMoj7aWQFq5QEM+R6E4WkzT5+tojDY7yjez8KgCBRoj4aEr99Fdqw==", + "dependencies": { + "d3-dsv": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-force": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-force/-/d3-force-3.0.0.tgz", + "integrity": "sha512-zxV/SsA+U4yte8051P4ECydjD/S+qeYtnaIyAs9tgHCqfguma/aAQDjo85A9Z6EKhBirHRJHXIgJUlffT4wdLg==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-quadtree": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-format": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-format/-/d3-format-3.1.0.tgz", + "integrity": "sha512-YyUI6AEuY/Wpt8KWLgZHsIU86atmikuoOmCfommt0LYHiQSPjvX2AcFc38PX0CBpr2RCyZhjex+NS/LPOv6YqA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-geo": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/d3-geo/-/d3-geo-3.1.1.tgz", + "integrity": "sha512-637ln3gXKXOwhalDzinUgY83KzNWZRKbYubaG+fGVuc/dxO64RRljtCTnf5ecMyE1RIdtqpkVcq0IbtU2S8j2Q==", + "dependencies": { + "d3-array": "2.5.0 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-hierarchy": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/d3-hierarchy/-/d3-hierarchy-3.1.2.tgz", + "integrity": "sha512-FX/9frcub54beBdugHjDCdikxThEqjnR93Qt7PvQTOHxyiNCAlvMrHhclk3cD5VeAaq9fxmfRp+CnWw9rEMBuA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-interpolate": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-interpolate/-/d3-interpolate-3.0.1.tgz", + "integrity": "sha512-3bYs1rOD33uo8aqJfKP3JWPAibgw8Zm2+L9vBKEHJ2Rg+viTR7o5Mmv5mZcieN+FRYaAOWX5SJATX6k1PWz72g==", + "dependencies": { + "d3-color": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-path": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-path/-/d3-path-3.1.0.tgz", + "integrity": "sha512-p3KP5HCf/bvjBSSKuXid6Zqijx7wIfNW+J/maPs+iwR35at5JCbLUT0LzF1cnjbCHWhqzQTIN2Jpe8pRebIEFQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-polygon": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-polygon/-/d3-polygon-3.0.1.tgz", + "integrity": "sha512-3vbA7vXYwfe1SYhED++fPUQlWSYTTGmFmQiany/gdbiWgU/iEyQzyymwL9SkJjFFuCS4902BSzewVGsHHmHtXg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-quadtree": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-quadtree/-/d3-quadtree-3.0.1.tgz", + "integrity": "sha512-04xDrxQTDTCFwP5H6hRhsRcb9xxv2RzkcsygFzmkSIOJy3PeRJP7sNk3VRIbKXcog561P9oU0/rVH6vDROAgUw==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-random": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-random/-/d3-random-3.0.1.tgz", + "integrity": "sha512-FXMe9GfxTxqd5D6jFsQ+DJ8BJS4E/fT5mqqdjovykEB2oFbTMDVdg1MGFxfQW+FBOGoB++k8swBrgwSHT1cUXQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/d3-scale/-/d3-scale-4.0.2.tgz", + "integrity": "sha512-GZW464g1SH7ag3Y7hXjf8RoUuAFIqklOAq3MRl4OaWabTFJY9PN/E1YklhXLh+OQ3fM9yS2nOkCoS+WLZ6kvxQ==", + "dependencies": { + "d3-array": "2.10.0 - 3", + "d3-format": "1 - 3", + "d3-interpolate": "1.2.0 - 3", + "d3-time": "2.1.1 - 3", + "d3-time-format": "2 - 4" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-scale-chromatic": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-scale-chromatic/-/d3-scale-chromatic-3.1.0.tgz", + "integrity": "sha512-A3s5PWiZ9YCXFye1o246KoscMWqf8BsD9eRiJ3He7C9OBaxKhAd5TFCdEx/7VbKtxxTsu//1mMJFrEt572cEyQ==", + "dependencies": { + "d3-color": "1 - 3", + "d3-interpolate": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-selection": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-selection/-/d3-selection-3.0.0.tgz", + "integrity": "sha512-fmTRWbNMmsmWq6xJV8D19U/gw/bwrHfNXxrIN+HfZgnzqTHp9jOmKMhsTUjXOJnZOdZY9Q28y4yebKzqDKlxlQ==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-shape": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/d3-shape/-/d3-shape-3.2.0.tgz", + "integrity": "sha512-SaLBuwGm3MOViRq2ABk3eLoxwZELpH6zhl3FbAoJ7Vm1gofKx6El1Ib5z23NUEhF9AsGl7y+dzLe5Cw2AArGTA==", + "dependencies": { + "d3-path": "^3.1.0" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/d3-time/-/d3-time-3.1.0.tgz", + "integrity": "sha512-VqKjzBLejbSMT4IgbmVgDjpkYrNWUYJnbCGo874u7MMKIWsILRX+OpX/gTk8MqjpT1A/c6HY2dCA77ZN0lkQ2Q==", + "dependencies": { + "d3-array": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-time-format": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/d3-time-format/-/d3-time-format-4.1.0.tgz", + "integrity": "sha512-dJxPBlzC7NugB2PDLwo9Q8JiTR3M3e4/XANkreKSUxF8vvXKqm1Yfq4Q5dl8budlunRVlUUaDUgFt7eA8D6NLg==", + "dependencies": { + "d3-time": "1 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-timer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-timer/-/d3-timer-3.0.1.tgz", + "integrity": "sha512-ndfJ/JxxMd3nw31uyKoY2naivF+r29V+Lc0svZxe1JvvIRmi8hUsrMvdOwgS1o6uBHmiz91geQ0ylPP0aj1VUA==", + "engines": { + "node": ">=12" + } + }, + "node_modules/d3-transition": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/d3-transition/-/d3-transition-3.0.1.tgz", + "integrity": "sha512-ApKvfjsSR6tg06xrL434C0WydLr7JewBB3V+/39RMHsaXTOG0zmt/OAXeng5M5LBm0ojmxJrpomQVZ1aPvBL4w==", + "dependencies": { + "d3-color": "1 - 3", + "d3-dispatch": "1 - 3", + "d3-ease": "1 - 3", + "d3-interpolate": "1 - 3", + "d3-timer": "1 - 3" + }, + "engines": { + "node": ">=12" + }, + "peerDependencies": { + "d3-selection": "2 - 3" + } + }, + "node_modules/d3-voronoi": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/d3-voronoi/-/d3-voronoi-1.1.2.tgz", + "integrity": "sha512-RhGS1u2vavcO7ay7ZNAPo4xeDh/VYeGof3x5ZLJBQgYhLegxr3s5IykvWmJ94FTU6mcbtp4sloqZ54mP6R4Utw==" + }, + "node_modules/d3-zoom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/d3-zoom/-/d3-zoom-3.0.0.tgz", + "integrity": "sha512-b8AmV3kfQaqWAuacbPuNbL6vahnOJflOhexLzMMNLga62+/nh0JzvJ0aO/5a5MVgUFGS7Hu1P9P03o3fJkDCyw==", + "dependencies": { + "d3-dispatch": "1 - 3", + "d3-drag": "2 - 3", + "d3-interpolate": "1 - 3", + "d3-selection": "2 - 3", + "d3-transition": "2 - 3" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/damerau-levenshtein": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/damerau-levenshtein/-/damerau-levenshtein-1.0.8.tgz", + "integrity": "sha512-sdQSFB7+llfUcQHUQO3+B8ERRj0Oa4w9POWMI/puGtuf7gFywGmkaLCElnudfTiKZV+NvHqL0ifzdrI8Ro7ESA==", + "dev": true + }, + "node_modules/data-view-buffer": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-buffer/-/data-view-buffer-1.0.1.tgz", + "integrity": "sha512-0lht7OugA5x3iJLOWFhWK/5ehONdprk0ISXqVFn/NFrDu+cuc8iADFrGQz5BnRK7LLU3JmkbXSxaqX+/mXYtUA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/data-view-byte-length/-/data-view-byte-length-1.0.1.tgz", + "integrity": "sha512-4J7wRJD3ABAzr8wP+OcIcqq2dlUKp4DVflx++hs5h5ZKydWMI6/D/fAot+yh6g2tHh8fLFTvNOaVN357NvSrOQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/data-view-byte-offset": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/data-view-byte-offset/-/data-view-byte-offset-1.0.0.tgz", + "integrity": "sha512-t/Ygsytq+R995EJ5PZlD4Cu56sWa8InXySaViRzw9apusqsOO2bQP+SbYzAhR0pFKoB+43lYy8rWban9JSuXnA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-data-view": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/de-indent": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/de-indent/-/de-indent-1.0.2.tgz", + "integrity": "sha512-e/1zu3xH5MQryN2zdVaF0OrdNLUbvWxzMbi+iNA6Bky7l1RoP8a2fIbRocyHclXt/arDrrR6lL3TqFD9pMQTsg==", + "dev": true + }, + "node_modules/debug": { + "version": "4.3.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.7.tgz", + "integrity": "sha512-Er2nc/H7RrMXZBFCEim6TCmMk02Z8vLC2Rbi1KEBggpo0fS6l0S1nnapwmIi3yW/+GOJap1Krg4w0Hg80oCqgQ==", + "devOptional": true, + "dependencies": { + "ms": "^2.1.3" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/dedent": { + "version": "1.5.3", + "resolved": "https://registry.npmjs.org/dedent/-/dedent-1.5.3.tgz", + "integrity": "sha512-NHQtfOOW68WD8lgypbLA5oT+Bt0xXJhiYvoR6SmmNXZfpzOGXwdKWmcwG8N7PwVVWV3eF/68nmD9BaJSsTBhyQ==", + "dev": true, + "peerDependencies": { + "babel-plugin-macros": "^3.1.0" + }, + "peerDependenciesMeta": { + "babel-plugin-macros": { + "optional": true + } + } + }, + "node_modules/deep-equal": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/deep-equal/-/deep-equal-2.2.3.tgz", + "integrity": "sha512-ZIwpnevOurS8bpT4192sqAowWM76JDKSHYzMLty3BZGSswgq6pBaH3DhCSW5xVAZICZyKdOBPjwww5wfgT/6PA==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.0", + "call-bind": "^1.0.5", + "es-get-iterator": "^1.1.3", + "get-intrinsic": "^1.2.2", + "is-arguments": "^1.1.1", + "is-array-buffer": "^3.0.2", + "is-date-object": "^1.0.5", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.2", + "isarray": "^2.0.5", + "object-is": "^1.1.5", + "object-keys": "^1.1.1", + "object.assign": "^4.1.4", + "regexp.prototype.flags": "^1.5.1", + "side-channel": "^1.0.4", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.1", + "which-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/deep-is": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/deep-is/-/deep-is-0.1.4.tgz", + "integrity": "sha512-oIPzksmTg4/MriiaYGO+okXDT7ztn/w3Eptv/+gSIdMdKsJo0u4CfYNFJPy+4SKMuCqGw2wxnA+URMg3t8a/bQ==", + "dev": true + }, + "node_modules/deepmerge": { + "version": "4.3.1", + "resolved": "https://registry.npmjs.org/deepmerge/-/deepmerge-4.3.1.tgz", + "integrity": "sha512-3sUqbMEc77XqpdNO7FRyRog+eW3ph+GYCbj+rK+uYyRMuwsVy0rMiVtPn+QJlKFvWP/1PYpapqYn0Me2knFn+A==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/define-data-property": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/define-data-property/-/define-data-property-1.1.4.tgz", + "integrity": "sha512-rBMvIzlpA8v6E+SJZoo++HAYqsLrkg7MSfIinMPFhmkorw7X+dOXVJQs+QT69zGkzMyfDnIMN2Wid1+NbL3T+A==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/define-properties": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/define-properties/-/define-properties-1.2.1.tgz", + "integrity": "sha512-8QmQKqEASLd5nx0U1B1okLElbUuuttJ/AnYmRXbbbGDWh6uS208EjD4Xqq/I9wK7u0v6O08XhTWnt5XtEbR6Dg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.0.1", + "has-property-descriptors": "^1.0.0", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/delaunator": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/delaunator/-/delaunator-5.0.1.tgz", + "integrity": "sha512-8nvh+XBe96aCESrGOqMp/84b13H9cdKbG5P2ejQCh4d4sK9RL4371qou9drQjMhvnPmhWl5hnmqbEE0fXr9Xnw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/delayed-stream": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/delayed-stream/-/delayed-stream-1.0.0.tgz", + "integrity": "sha512-ZySD7Nf91aLB0RxL4KGrKHBXl7Eds1DAmEdcoVawXnLD7SDhpNgtuII2aAkg7a7QS41jxPSZ17p4VdGnMHk3MQ==", + "engines": { + "node": ">=0.4.0" + } + }, + "node_modules/detect-newline": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/detect-newline/-/detect-newline-3.1.0.tgz", + "integrity": "sha512-TLz+x/vEXm/Y7P7wn1EJFNLxYpUD4TgMosxY6fAVJUnJMbupHBOncxyWUG9OpTaH9EBD7uFI5LfEgmMOc54DsA==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/diff-sequences": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/diff-sequences/-/diff-sequences-29.6.3.tgz", + "integrity": "sha512-EjePK1srD3P08o2j4f0ExnylqRs5B9tJjcp9t1krH2qRi8CCdsYfwe9JgSLurFBWwq4uOlipzfk5fHNvwFKr8Q==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/dir-glob": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/dir-glob/-/dir-glob-3.0.1.tgz", + "integrity": "sha512-WkrWp9GR4KXfKGYzOLmTuGVi1UWFfws377n9cc55/tb6DuqyF6pcQ5AbiHEshaDpY9v6oaSr2XCDidGmMwdzIA==", + "dev": true, + "dependencies": { + "path-type": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/django-s3-file-field": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/django-s3-file-field/-/django-s3-file-field-1.0.1.tgz", + "integrity": "sha512-va0BHToHhEKB8+hguj7vQdbdVNYcmlatPC/m/eszzOZNrNeKe3rPAJphqmTjXaYmBD4RedqlEM/IgsSQFU5Sjw==", + "dependencies": { + "axios": "^1.6.8" + } + }, + "node_modules/doctrine": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-3.0.0.tgz", + "integrity": "sha512-yS+Q5i3hBf7GBkd4KG8a7eBNNWNGLTaEwwYWUijIYM7zrlYDM0BFXHjjPWlWZ1Rg7UaddZeIDmi9jF3HmqiQ2w==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=6.0.0" + } + }, + "node_modules/earcut": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/earcut/-/earcut-3.0.0.tgz", + "integrity": "sha512-41Fs7Q/PLq1SDbqjsgcY7GA42T0jvaCNGXgGtsNdvg+Yv8eIu06bxv4/PoREkZ9nMDNwnUSG9OFB9+yv8eKhDg==" + }, + "node_modules/electron-to-chromium": { + "version": "1.5.23", + "resolved": "https://registry.npmjs.org/electron-to-chromium/-/electron-to-chromium-1.5.23.tgz", + "integrity": "sha512-mBhODedOXg4v5QWwl21DjM5amzjmI1zw9EPrPK/5Wx7C8jt33bpZNrC7OhHUG3pxRtbLpr3W2dXT+Ph1SsfRZA==", + "dev": true + }, + "node_modules/emittery": { + "version": "0.13.1", + "resolved": "https://registry.npmjs.org/emittery/-/emittery-0.13.1.tgz", + "integrity": "sha512-DeWwawk6r5yR9jFgnDKYt4sLS0LmHJJi3ZOnb5/JdbYwj3nW+FxQnHIjhBKz8YLC7oRNPVM9NQ47I3CVx34eqQ==", + "dev": true, + "engines": { + "node": ">=12" + }, + "funding": { + "url": "https://github.com/sindresorhus/emittery?sponsor=1" + } + }, + "node_modules/emoji-regex": { + "version": "9.2.2", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-9.2.2.tgz", + "integrity": "sha512-L18DaJsXSUk2+42pv8mLs5jJT2hqFkFE4j21wOmgbUqsZ2hL72NsUU785g9RXgo3s0ZNgVl42TiHp3ZtOv/Vyg==", + "dev": true + }, + "node_modules/enhanced-resolve": { + "version": "5.17.1", + "resolved": "https://registry.npmjs.org/enhanced-resolve/-/enhanced-resolve-5.17.1.tgz", + "integrity": "sha512-LMHl3dXhTcfv8gM4kEzIUeTQ+7fpdA0l2tUf34BddXPkz2A5xJ5L/Pchd5BL6rdccM9QGvu0sWZzK1Z1t4wwyg==", + "dev": true, + "dependencies": { + "graceful-fs": "^4.2.4", + "tapable": "^2.2.0" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/entities": { + "version": "4.5.0", + "resolved": "https://registry.npmjs.org/entities/-/entities-4.5.0.tgz", + "integrity": "sha512-V0hjH4dGPh9Ao5p0MoRY6BVqtwCjhz6vI5LT8AJ55H+4g9/4vbHx1I54fS0XuclLhDHArPQCiMjDxjaL8fPxhw==", + "engines": { + "node": ">=0.12" + }, + "funding": { + "url": "https://github.com/fb55/entities?sponsor=1" + } + }, + "node_modules/error-ex": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/error-ex/-/error-ex-1.3.2.tgz", + "integrity": "sha512-7dFHNmqeFSEt2ZBsCriorKnn3Z2pj+fd9kmI6QoWw4//DL+icEBfc0U7qJCisqrTsKTjw4fNFy2pW9OqStD84g==", + "dev": true, + "dependencies": { + "is-arrayish": "^0.2.1" + } + }, + "node_modules/es-abstract": { + "version": "1.23.3", + "resolved": "https://registry.npmjs.org/es-abstract/-/es-abstract-1.23.3.tgz", + "integrity": "sha512-e+HfNH61Bj1X9/jLc5v1owaLYuHdeHHSQlkhCBiTK8rBvKaULl/beGMxwrMXjpYrv4pz22BlY570vVePA2ho4A==", + "dev": true, + "dependencies": { + "array-buffer-byte-length": "^1.0.1", + "arraybuffer.prototype.slice": "^1.0.3", + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "data-view-buffer": "^1.0.1", + "data-view-byte-length": "^1.0.1", + "data-view-byte-offset": "^1.0.0", + "es-define-property": "^1.0.0", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "es-set-tostringtag": "^2.0.3", + "es-to-primitive": "^1.2.1", + "function.prototype.name": "^1.1.6", + "get-intrinsic": "^1.2.4", + "get-symbol-description": "^1.0.2", + "globalthis": "^1.0.3", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "hasown": "^2.0.2", + "internal-slot": "^1.0.7", + "is-array-buffer": "^3.0.4", + "is-callable": "^1.2.7", + "is-data-view": "^1.0.1", + "is-negative-zero": "^2.0.3", + "is-regex": "^1.1.4", + "is-shared-array-buffer": "^1.0.3", + "is-string": "^1.0.7", + "is-typed-array": "^1.1.13", + "is-weakref": "^1.0.2", + "object-inspect": "^1.13.1", + "object-keys": "^1.1.1", + "object.assign": "^4.1.5", + "regexp.prototype.flags": "^1.5.2", + "safe-array-concat": "^1.1.2", + "safe-regex-test": "^1.0.3", + "string.prototype.trim": "^1.2.9", + "string.prototype.trimend": "^1.0.8", + "string.prototype.trimstart": "^1.0.8", + "typed-array-buffer": "^1.0.2", + "typed-array-byte-length": "^1.0.1", + "typed-array-byte-offset": "^1.0.2", + "typed-array-length": "^1.0.6", + "unbox-primitive": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-define-property": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-define-property/-/es-define-property-1.0.0.tgz", + "integrity": "sha512-jxayLKShrEqqzJ0eumQbVhTYQM27CfT1T35+gCgDFoL82JLsXqTJ76zv6A0YLOgEnLUMvLzsDsGIrl8NFpT2gQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-errors": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/es-errors/-/es-errors-1.3.0.tgz", + "integrity": "sha512-Zf5H2Kxt2xjTvbJvP2ZWLEICxA6j+hAmMzIlypy4xcBg1vKVnx89Wy0GbS+kf5cwCVFFzdCFh2XSCFNULS6csw==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-get-iterator": { + "version": "1.1.3", + "resolved": "https://registry.npmjs.org/es-get-iterator/-/es-get-iterator-1.1.3.tgz", + "integrity": "sha512-sPZmqHBe6JIiTfN5q2pEi//TwxmAFHwj/XEuYjTuse78i8KxaqMTTzxPoFKuzRpDpTJ+0NAbpfenkmH2rePtuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.1.3", + "has-symbols": "^1.0.3", + "is-arguments": "^1.1.1", + "is-map": "^2.0.2", + "is-set": "^2.0.2", + "is-string": "^1.0.7", + "isarray": "^2.0.5", + "stop-iteration-iterator": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/es-iterator-helpers": { + "version": "1.0.19", + "resolved": "https://registry.npmjs.org/es-iterator-helpers/-/es-iterator-helpers-1.0.19.tgz", + "integrity": "sha512-zoMwbCcH5hwUkKJkT8kDIBZSz9I6mVG//+lDCinLCGov4+r7NIy0ld8o03M0cJxl2spVf6ESYVS6/gpIfq1FFw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.3", + "es-errors": "^1.3.0", + "es-set-tostringtag": "^2.0.3", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "has-property-descriptors": "^1.0.2", + "has-proto": "^1.0.3", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "iterator.prototype": "^1.1.2", + "safe-array-concat": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-object-atoms": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/es-object-atoms/-/es-object-atoms-1.0.0.tgz", + "integrity": "sha512-MZ4iQ6JwHOBQjahnjwaC1ZtIBH+2ohjamzAO3oaHcXYup7qxjF2fixyH+Q71voWHeOkI2q/TnJao/KfXYIZWbw==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-set-tostringtag": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/es-set-tostringtag/-/es-set-tostringtag-2.0.3.tgz", + "integrity": "sha512-3T8uNMC3OQTHkFUsFq8r/BwAXLHvU/9O9mE0fBc/MY5iq/8H7ncvO947LmYA6ldWw9Uh8Yhf25zu6n7nML5QWQ==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.2.4", + "has-tostringtag": "^1.0.2", + "hasown": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/es-shim-unscopables": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/es-shim-unscopables/-/es-shim-unscopables-1.0.2.tgz", + "integrity": "sha512-J3yBRXCzDu4ULnQwxyToo/OjdMx6akgVC7K6few0a7F/0wLtmKKN7I73AH5T2836UuXRqN7Qg+IIUw/+YJksRw==", + "dev": true, + "dependencies": { + "hasown": "^2.0.0" + } + }, + "node_modules/es-to-primitive": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/es-to-primitive/-/es-to-primitive-1.2.1.tgz", + "integrity": "sha512-QCOllgZJtaUo9miYBcLChTUaHNjJF3PYs1VidD7AwiEj1kYxKeQTctLAezAOH5ZKRH0g2IgPn6KwB4IT8iRpvA==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.4", + "is-date-object": "^1.0.1", + "is-symbol": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/esbuild": { + "version": "0.21.5", + "resolved": "https://registry.npmjs.org/esbuild/-/esbuild-0.21.5.tgz", + "integrity": "sha512-mg3OPMV4hXywwpoDxu3Qda5xCKQi+vCTZq8S9J/EpkhB2HzKXq4SNFZE3+NK93JYxc8VMSep+lOUSC/RVKaBqw==", + "devOptional": true, + "hasInstallScript": true, + "bin": { + "esbuild": "bin/esbuild" + }, + "engines": { + "node": ">=12" + }, + "optionalDependencies": { + "@esbuild/aix-ppc64": "0.21.5", + "@esbuild/android-arm": "0.21.5", + "@esbuild/android-arm64": "0.21.5", + "@esbuild/android-x64": "0.21.5", + "@esbuild/darwin-arm64": "0.21.5", + "@esbuild/darwin-x64": "0.21.5", + "@esbuild/freebsd-arm64": "0.21.5", + "@esbuild/freebsd-x64": "0.21.5", + "@esbuild/linux-arm": "0.21.5", + "@esbuild/linux-arm64": "0.21.5", + "@esbuild/linux-ia32": "0.21.5", + "@esbuild/linux-loong64": "0.21.5", + "@esbuild/linux-mips64el": "0.21.5", + "@esbuild/linux-ppc64": "0.21.5", + "@esbuild/linux-riscv64": "0.21.5", + "@esbuild/linux-s390x": "0.21.5", + "@esbuild/linux-x64": "0.21.5", + "@esbuild/netbsd-x64": "0.21.5", + "@esbuild/openbsd-x64": "0.21.5", + "@esbuild/sunos-x64": "0.21.5", + "@esbuild/win32-arm64": "0.21.5", + "@esbuild/win32-ia32": "0.21.5", + "@esbuild/win32-x64": "0.21.5" + } + }, + "node_modules/escalade": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/escalade/-/escalade-3.2.0.tgz", + "integrity": "sha512-WUj2qlxaQtO4g6Pq5c29GTcWGDyd8itL8zTlipgECz3JesAiiOKotd8JU6otB3PACgG6xkJUyVhboMS+bje/jA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/escape-string-regexp": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-4.0.0.tgz", + "integrity": "sha512-TtpcNJ3XAzx3Gq8sWRzJaVajRs0uVxA2YAkdb1jm2YkPz4G6egUFAyA3n5vtEIZefPk5Wa4UXbKuS5fKkJWdgA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/eslint": { + "version": "8.57.0", + "resolved": "https://registry.npmjs.org/eslint/-/eslint-8.57.0.tgz", + "integrity": "sha512-dZ6+mexnaTIbSBZWgou51U6OmzIhYM2VcNdtiTtI7qPNZm35Akpr0f6vtw3w1Kmn5PYo+tZVfh13WrhpS6oLqQ==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.2.0", + "@eslint-community/regexpp": "^4.6.1", + "@eslint/eslintrc": "^2.1.4", + "@eslint/js": "8.57.0", + "@humanwhocodes/config-array": "^0.11.14", + "@humanwhocodes/module-importer": "^1.0.1", + "@nodelib/fs.walk": "^1.2.8", + "@ungap/structured-clone": "^1.2.0", + "ajv": "^6.12.4", + "chalk": "^4.0.0", + "cross-spawn": "^7.0.2", + "debug": "^4.3.2", + "doctrine": "^3.0.0", + "escape-string-regexp": "^4.0.0", + "eslint-scope": "^7.2.2", + "eslint-visitor-keys": "^3.4.3", + "espree": "^9.6.1", + "esquery": "^1.4.2", + "esutils": "^2.0.2", + "fast-deep-equal": "^3.1.3", + "file-entry-cache": "^6.0.1", + "find-up": "^5.0.0", + "glob-parent": "^6.0.2", + "globals": "^13.19.0", + "graphemer": "^1.4.0", + "ignore": "^5.2.0", + "imurmurhash": "^0.1.4", + "is-glob": "^4.0.0", + "is-path-inside": "^3.0.3", + "js-yaml": "^4.1.0", + "json-stable-stringify-without-jsonify": "^1.0.1", + "levn": "^0.4.1", + "lodash.merge": "^4.6.2", + "minimatch": "^3.1.2", + "natural-compare": "^1.4.0", + "optionator": "^0.9.3", + "strip-ansi": "^6.0.1", + "text-table": "^0.2.0" + }, + "bin": { + "eslint": "bin/eslint.js" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-config-airbnb-base": { + "version": "15.0.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-base/-/eslint-config-airbnb-base-15.0.0.tgz", + "integrity": "sha512-xaX3z4ZZIcFLvh2oUNvcX5oEofXda7giYmuplVxoOg5A7EXJMrUyqRgR+mhDhPK8LZ4PttFOBvCYDbX3sUoUig==", + "dev": true, + "dependencies": { + "confusing-browser-globals": "^1.0.10", + "object.assign": "^4.1.2", + "object.entries": "^1.1.5", + "semver": "^6.3.0" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + }, + "peerDependencies": { + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.2" + } + }, + "node_modules/eslint-config-airbnb-base/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-config-airbnb-typescript": { + "version": "17.1.0", + "resolved": "https://registry.npmjs.org/eslint-config-airbnb-typescript/-/eslint-config-airbnb-typescript-17.1.0.tgz", + "integrity": "sha512-GPxI5URre6dDpJ0CtcthSZVBAfI+Uw7un5OYNVxP2EYi3H81Jw701yFP7AU+/vCE7xBtFmjge7kfhhk4+RAiig==", + "dev": true, + "dependencies": { + "eslint-config-airbnb-base": "^15.0.0" + }, + "peerDependencies": { + "@typescript-eslint/eslint-plugin": "^5.13.0 || ^6.0.0", + "@typescript-eslint/parser": "^5.0.0 || ^6.0.0", + "eslint": "^7.32.0 || ^8.2.0", + "eslint-plugin-import": "^2.25.3" + } + }, + "node_modules/eslint-define-config": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/eslint-define-config/-/eslint-define-config-2.1.0.tgz", + "integrity": "sha512-QUp6pM9pjKEVannNAbSJNeRuYwW3LshejfyBBpjeMGaJjaDUpVps4C6KVR8R7dWZnD3i0synmrE36znjTkJvdQ==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/Shinigami92" + }, + { + "type": "paypal", + "url": "https://www.paypal.com/donate/?hosted_button_id=L7GY729FBKTZY" + } + ], + "engines": { + "node": ">=18.0.0", + "npm": ">=9.0.0", + "pnpm": ">=8.6.0" + } + }, + "node_modules/eslint-import-resolver-custom-alias": { + "version": "1.3.2", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-custom-alias/-/eslint-import-resolver-custom-alias-1.3.2.tgz", + "integrity": "sha512-wBPcZA2k6/IXaT8FsLMyiyVSG6WVEuaYIAbeKLXeGwr523BmeB9lKAAoLJWSqp3txsnU4gpkgD2x1q6K8k0uDQ==", + "dev": true, + "dependencies": { + "glob-parent": "^6.0.2", + "resolve": "^1.22.2" + }, + "peerDependencies": { + "eslint-plugin-import": ">=2.2.0" + } + }, + "node_modules/eslint-import-resolver-node": { + "version": "0.3.9", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-node/-/eslint-import-resolver-node-0.3.9.tgz", + "integrity": "sha512-WFj2isz22JahUv+B788TlO3N6zL3nNJGU8CcZbPZvVEkBPaJdCV4vy5wyghty5ROFbCRnm132v8BScu5/1BQ8g==", + "dev": true, + "dependencies": { + "debug": "^3.2.7", + "is-core-module": "^2.13.0", + "resolve": "^1.22.4" + } + }, + "node_modules/eslint-import-resolver-node/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-import-resolver-typescript": { + "version": "3.6.3", + "resolved": "https://registry.npmjs.org/eslint-import-resolver-typescript/-/eslint-import-resolver-typescript-3.6.3.tgz", + "integrity": "sha512-ud9aw4szY9cCT1EWWdGv1L1XR6hh2PaRWif0j2QjQ0pgTY/69iw+W0Z4qZv5wHahOl8isEr+k/JnyAqNQkLkIA==", + "dev": true, + "dependencies": { + "@nolyfill/is-core-module": "1.0.39", + "debug": "^4.3.5", + "enhanced-resolve": "^5.15.0", + "eslint-module-utils": "^2.8.1", + "fast-glob": "^3.3.2", + "get-tsconfig": "^4.7.5", + "is-bun-module": "^1.0.2", + "is-glob": "^4.0.3" + }, + "engines": { + "node": "^14.18.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/unts/projects/eslint-import-resolver-ts" + }, + "peerDependencies": { + "eslint": "*", + "eslint-plugin-import": "*", + "eslint-plugin-import-x": "*" + }, + "peerDependenciesMeta": { + "eslint-plugin-import": { + "optional": true + }, + "eslint-plugin-import-x": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils": { + "version": "2.11.0", + "resolved": "https://registry.npmjs.org/eslint-module-utils/-/eslint-module-utils-2.11.0.tgz", + "integrity": "sha512-gbBE5Hitek/oG6MUVj6sFuzEjA/ClzNflVrLovHi/JgLdC7fiN5gLAY1WIPW1a0V5I999MnsrvVrCOGmmVqDBQ==", + "dev": true, + "dependencies": { + "debug": "^3.2.7" + }, + "engines": { + "node": ">=4" + }, + "peerDependenciesMeta": { + "eslint": { + "optional": true + } + } + }, + "node_modules/eslint-module-utils/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import": { + "version": "2.30.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-import/-/eslint-plugin-import-2.30.0.tgz", + "integrity": "sha512-/mHNE9jINJfiD2EKkg1BKyPyUk4zdnT54YgbOgfjSakWT5oyX/qQLVNTkehyfpcMxZXMy1zyonZ2v7hZTX43Yw==", + "dev": true, + "dependencies": { + "@rtsao/scc": "^1.1.0", + "array-includes": "^3.1.8", + "array.prototype.findlastindex": "^1.2.5", + "array.prototype.flat": "^1.3.2", + "array.prototype.flatmap": "^1.3.2", + "debug": "^3.2.7", + "doctrine": "^2.1.0", + "eslint-import-resolver-node": "^0.3.9", + "eslint-module-utils": "^2.9.0", + "hasown": "^2.0.2", + "is-core-module": "^2.15.1", + "is-glob": "^4.0.3", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "object.groupby": "^1.0.3", + "object.values": "^1.2.0", + "semver": "^6.3.1", + "tsconfig-paths": "^3.15.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^2 || ^3 || ^4 || ^5 || ^6 || ^7.2.0 || ^8" + } + }, + "node_modules/eslint-plugin-import/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/debug": { + "version": "3.2.7", + "resolved": "https://registry.npmjs.org/debug/-/debug-3.2.7.tgz", + "integrity": "sha512-CFjzYYAi4ThfiQvizrFQevTTXHtnCqWfe7x1AhgEscTz6ZbLbfoLRLPugTQyBth6f8ZERVUSyWHFD/7Wu4t1XQ==", + "dev": true, + "dependencies": { + "ms": "^2.1.1" + } + }, + "node_modules/eslint-plugin-import/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-import/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-import/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-jsx-a11y": { + "version": "6.10.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-jsx-a11y/-/eslint-plugin-jsx-a11y-6.10.0.tgz", + "integrity": "sha512-ySOHvXX8eSN6zz8Bywacm7CvGNhUtdjvqfQDVe6020TUK34Cywkw7m0KsCCk1Qtm9G1FayfTN1/7mMYnYO2Bhg==", + "dev": true, + "dependencies": { + "aria-query": "~5.1.3", + "array-includes": "^3.1.8", + "array.prototype.flatmap": "^1.3.2", + "ast-types-flow": "^0.0.8", + "axe-core": "^4.10.0", + "axobject-query": "^4.1.0", + "damerau-levenshtein": "^1.0.8", + "emoji-regex": "^9.2.2", + "es-iterator-helpers": "^1.0.19", + "hasown": "^2.0.2", + "jsx-ast-utils": "^3.3.5", + "language-tags": "^1.0.9", + "minimatch": "^3.1.2", + "object.fromentries": "^2.0.8", + "safe-regex-test": "^1.0.3", + "string.prototype.includes": "^2.0.0" + }, + "engines": { + "node": ">=4.0" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-jsx-a11y/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react": { + "version": "7.36.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-react/-/eslint-plugin-react-7.36.1.tgz", + "integrity": "sha512-/qwbqNXZoq+VP30s1d4Nc1C5GTxjJQjk4Jzs4Wq2qzxFM7dSmuG2UkIjg2USMLh3A/aVcUNrK7v0J5U1XEGGwA==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.8", + "array.prototype.findlast": "^1.2.5", + "array.prototype.flatmap": "^1.3.2", + "array.prototype.tosorted": "^1.1.4", + "doctrine": "^2.1.0", + "es-iterator-helpers": "^1.0.19", + "estraverse": "^5.3.0", + "hasown": "^2.0.2", + "jsx-ast-utils": "^2.4.1 || ^3.0.0", + "minimatch": "^3.1.2", + "object.entries": "^1.1.8", + "object.fromentries": "^2.0.8", + "object.values": "^1.2.0", + "prop-types": "^15.8.1", + "resolve": "^2.0.0-next.5", + "semver": "^6.3.1", + "string.prototype.matchall": "^4.0.11", + "string.prototype.repeat": "^1.0.0" + }, + "engines": { + "node": ">=4" + }, + "peerDependencies": { + "eslint": "^3 || ^4 || ^5 || ^6 || ^7 || ^8 || ^9.7" + } + }, + "node_modules/eslint-plugin-react/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint-plugin-react/node_modules/doctrine": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/doctrine/-/doctrine-2.1.0.tgz", + "integrity": "sha512-35mSku4ZXK0vfCuHEDAwt55dg2jNajHZ1odvF+8SSr82EsZY4QmXfuWso8oEd8zRhVObSN18aM0CjSdoBX7zIw==", + "dev": true, + "dependencies": { + "esutils": "^2.0.2" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/eslint-plugin-react/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/eslint-plugin-react/node_modules/resolve": { + "version": "2.0.0-next.5", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-2.0.0-next.5.tgz", + "integrity": "sha512-U7WjGVG9sH8tvjW5SmGbQuui75FiyjAX72HX15DwBBwF9dNiQZRQAg9nnPhYy+TUnE0+VcrttuvNI8oSxZcocA==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/eslint-plugin-react/node_modules/semver": { + "version": "6.3.1", + "resolved": "https://registry.npmjs.org/semver/-/semver-6.3.1.tgz", + "integrity": "sha512-BR7VvDCVHO+q2xBEWskxS6DJE1qRnb7DxzUrogb71CWoSficBxYsiAGd+Kl0mmq/MprG9yArRkyrQxTO6XjMzA==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + } + }, + "node_modules/eslint-plugin-vue": { + "version": "9.28.0", + "resolved": "https://registry.npmjs.org/eslint-plugin-vue/-/eslint-plugin-vue-9.28.0.tgz", + "integrity": "sha512-ShrihdjIhOTxs+MfWun6oJWuk+g/LAhN+CiuOl/jjkG3l0F2AuK5NMTaWqyvBgkFtpYmyks6P4603mLmhNJW8g==", + "dev": true, + "dependencies": { + "@eslint-community/eslint-utils": "^4.4.0", + "globals": "^13.24.0", + "natural-compare": "^1.4.0", + "nth-check": "^2.1.1", + "postcss-selector-parser": "^6.0.15", + "semver": "^7.6.3", + "vue-eslint-parser": "^9.4.3", + "xml-name-validator": "^4.0.0" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "peerDependencies": { + "eslint": "^6.2.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vuejs-accessibility": { + "version": "2.4.1", + "resolved": "https://registry.npmjs.org/eslint-plugin-vuejs-accessibility/-/eslint-plugin-vuejs-accessibility-2.4.1.tgz", + "integrity": "sha512-ZRZhPdslplZXSF71MtSG+zXYRAT5KiHR4JVuo/DERQf9noAkDvi5W418VOE1qllmJd7wTenndxi1q8XeDMxdHw==", + "dev": true, + "dependencies": { + "aria-query": "^5.3.0", + "emoji-regex": "^10.0.0", + "vue-eslint-parser": "^9.0.1" + }, + "engines": { + "node": ">=16.0.0" + }, + "peerDependencies": { + "eslint": "^5.0.0 || ^6.0.0 || ^7.0.0 || ^8.0.0 || ^9.0.0" + } + }, + "node_modules/eslint-plugin-vuejs-accessibility/node_modules/aria-query": { + "version": "5.3.1", + "resolved": "https://registry.npmjs.org/aria-query/-/aria-query-5.3.1.tgz", + "integrity": "sha512-Z/ZeOgVl7bcSYZ/u/rh0fOpvEpq//LZmdbkXyc7syVzjPAhfOa9ebsdTSjEBDU4vs5nC98Kfduj1uFo0qyET3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/eslint-plugin-vuejs-accessibility/node_modules/emoji-regex": { + "version": "10.4.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-10.4.0.tgz", + "integrity": "sha512-EC+0oUMY1Rqm4O6LLrgjtYDvcVYTy7chDnM4Q7030tP4Kwj3u/pR6gP9ygnp2CJMK5Gq+9Q2oqmrFJAz01DXjw==", + "dev": true + }, + "node_modules/eslint-scope": { + "version": "7.2.2", + "resolved": "https://registry.npmjs.org/eslint-scope/-/eslint-scope-7.2.2.tgz", + "integrity": "sha512-dOt21O7lTMhDM+X9mB4GX+DZrZtCUJPL/wlcTqxyrx5IvO0IYtILdtrQGQp+8n5S0gwSVmOf9NQrjMOgfQZlIg==", + "dev": true, + "dependencies": { + "esrecurse": "^4.3.0", + "estraverse": "^5.2.0" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint-visitor-keys": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/eslint-visitor-keys/-/eslint-visitor-keys-3.4.3.tgz", + "integrity": "sha512-wpc+LXeiyiisxPlEkUzU6svyS1frIO3Mgxj1fdy7Pm8Ygzguax2N3Fa/D/ag1WqbOprdI+uY6wMUl8/a2G+iag==", + "dev": true, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/eslint/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/eslint/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/espree": { + "version": "9.6.1", + "resolved": "https://registry.npmjs.org/espree/-/espree-9.6.1.tgz", + "integrity": "sha512-oruZaFkjorTpF32kDSI5/75ViwGeZginGGy2NoOSg3Q9bnwlnmDm4HLnkl0RE3n+njDXR037aY1+x58Z/zFdwQ==", + "dev": true, + "dependencies": { + "acorn": "^8.9.0", + "acorn-jsx": "^5.3.2", + "eslint-visitor-keys": "^3.4.1" + }, + "engines": { + "node": "^12.22.0 || ^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://opencollective.com/eslint" + } + }, + "node_modules/esprima": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/esprima/-/esprima-4.0.1.tgz", + "integrity": "sha512-eGuFFw7Upda+g4p+QHvnW0RyTX/SVeJBDM/gCtMARO0cLuT2HcEKnTPvhjV6aGeqrCB/sbNop0Kszm0jsaWU4A==", + "dev": true, + "bin": { + "esparse": "bin/esparse.js", + "esvalidate": "bin/esvalidate.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/esquery": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/esquery/-/esquery-1.6.0.tgz", + "integrity": "sha512-ca9pw9fomFcKPvFLXhBKUK90ZvGibiGOvRJNbjljY7s7uq/5YO4BOzcYtJqExdx99rF6aAcnRxHmcUHcz6sQsg==", + "dev": true, + "dependencies": { + "estraverse": "^5.1.0" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/esrecurse": { + "version": "4.3.0", + "resolved": "https://registry.npmjs.org/esrecurse/-/esrecurse-4.3.0.tgz", + "integrity": "sha512-KmfKL3b6G+RXvP8N1vr3Tq1kL/oCFgn2NYXEtqP8/L3pKapUA4G8cFVaoF3SU323CD4XypR/ffioHmkti6/Tag==", + "dev": true, + "dependencies": { + "estraverse": "^5.2.0" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estraverse": { + "version": "5.3.0", + "resolved": "https://registry.npmjs.org/estraverse/-/estraverse-5.3.0.tgz", + "integrity": "sha512-MMdARuVEQziNTeJD8DgMqmhwR11BRQ/cBP+pLtYdSTnf3MIO8fFeiINEbX36ZdNlfU/7A9f3gUw49B3oQsvwBA==", + "dev": true, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/estree-walker": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/estree-walker/-/estree-walker-2.0.2.tgz", + "integrity": "sha512-Rfkk/Mp/DL7JVje3u18FxFujQlTNR2q6QfMSMB7AvCBx91NGj/ba3kCfza0f6dVDbw7YlRf/nDrn7pQrCCyQ/w==" + }, + "node_modules/esutils": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/esutils/-/esutils-2.0.3.tgz", + "integrity": "sha512-kVscqXk4OCp68SZ0dkgEKVi6/8ij300KBWTJq32P/dYeWTSwK41WyTxalN1eRmA5Z9UU/LX9D7FWSmV9SAYx6g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/execa": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/execa/-/execa-5.1.1.tgz", + "integrity": "sha512-8uSpZZocAZRBAPIEINJj3Lo9HyGitllczc27Eh5YYojjMFMn8yHMDMaUHE2Jqfq05D/wucwI4JGURyXt1vchyg==", + "dev": true, + "dependencies": { + "cross-spawn": "^7.0.3", + "get-stream": "^6.0.0", + "human-signals": "^2.1.0", + "is-stream": "^2.0.0", + "merge-stream": "^2.0.0", + "npm-run-path": "^4.0.1", + "onetime": "^5.1.2", + "signal-exit": "^3.0.3", + "strip-final-newline": "^2.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sindresorhus/execa?sponsor=1" + } + }, + "node_modules/exit": { + "version": "0.1.2", + "resolved": "https://registry.npmjs.org/exit/-/exit-0.1.2.tgz", + "integrity": "sha512-Zk/eNKV2zbjpKzrsQ+n1G6poVbErQxJ0LBOJXaKZ1EViLzH+hrLu9cdXI4zw9dBQJslwBEpbQ2P1oS7nDxs6jQ==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/expect": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/expect/-/expect-29.7.0.tgz", + "integrity": "sha512-2Zks0hf1VLFYI1kbh0I5jP3KHHyCHpkfyHBzsSXRFgl/Bg9mWYfMW8oD+PdMPlEwy5HNsR9JutYy6pMeOh61nw==", + "dev": true, + "dependencies": { + "@jest/expect-utils": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/extend-shallow": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-2.0.1.tgz", + "integrity": "sha512-zCnTtlxNoAiDc3gqY2aYAWFx7XWWiasuF2K8Me5WbN8otHKTUKBwjPtNpRs/rbUZm7KxWAaNj7P1a/p52GbVug==", + "dependencies": { + "is-extendable": "^0.1.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/fast-deep-equal": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/fast-deep-equal/-/fast-deep-equal-3.1.3.tgz", + "integrity": "sha512-f3qQ9oQy9j2AhBe/H9VC91wLmKBCCU/gDOnKNAYG5hswO7BLKj09Hc5HYNz9cGI++xlpDCIgDaitVs03ATR84Q==" + }, + "node_modules/fast-glob": { + "version": "3.3.2", + "resolved": "https://registry.npmjs.org/fast-glob/-/fast-glob-3.3.2.tgz", + "integrity": "sha512-oX2ruAFQwf/Orj8m737Y5adxDQO0LAB7/S5MnxCdTNDd4p6BsyIVsv9JQsATbTSq8KHRpLwIHbVlUNatxd+1Ow==", + "dev": true, + "dependencies": { + "@nodelib/fs.stat": "^2.0.2", + "@nodelib/fs.walk": "^1.2.3", + "glob-parent": "^5.1.2", + "merge2": "^1.3.0", + "micromatch": "^4.0.4" + }, + "engines": { + "node": ">=8.6.0" + } + }, + "node_modules/fast-glob/node_modules/glob-parent": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-5.1.2.tgz", + "integrity": "sha512-AOIgSQCepiJYwP3ARnGx+5VnTu2HBYdzbGP45eLw1vr3zB3vZLeyed1sC9hnbcOc9/SrMyM5RPQrkGz4aS9Zow==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.1" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fast-json-stable-stringify": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/fast-json-stable-stringify/-/fast-json-stable-stringify-2.1.0.tgz", + "integrity": "sha512-lhd/wF+Lk98HZoTCtlVraHtfh5XYijIjalXck7saUtuanSDyLMxnHhSXEDJqHxD7msR8D0uCmqlkwjCV8xvwHw==", + "dev": true + }, + "node_modules/fast-levenshtein": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/fast-levenshtein/-/fast-levenshtein-2.0.6.tgz", + "integrity": "sha512-DCXu6Ifhqcks7TZKY3Hxp3y6qphY5SJZmrWMDrKcERSOXWQdMhU9Ig/PYrzyw/ul9jOIyh0N4M0tbC5hodg8dw==", + "dev": true + }, + "node_modules/fastq": { + "version": "1.17.1", + "resolved": "https://registry.npmjs.org/fastq/-/fastq-1.17.1.tgz", + "integrity": "sha512-sRVD3lWVIXWg6By68ZN7vho9a1pQcN/WBFaAAsDDFzlJjvoGx0P8z7V1t72grFJfJhu3YPZBuu25f7Kaw2jN1w==", + "dev": true, + "dependencies": { + "reusify": "^1.0.4" + } + }, + "node_modules/fb-watchman": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/fb-watchman/-/fb-watchman-2.0.2.tgz", + "integrity": "sha512-p5161BqbuCaSnB8jIbzQHOlpgsPmK5rJVDfDKO91Axs5NC1uu3HRQm6wt9cd9/+GtQQIO53JdGXXoyDpTAsgYA==", + "dev": true, + "dependencies": { + "bser": "2.1.1" + } + }, + "node_modules/fflate": { + "version": "0.8.2", + "resolved": "https://registry.npmjs.org/fflate/-/fflate-0.8.2.tgz", + "integrity": "sha512-cPJU47OaAoCbg0pBvzsgpTPhmhqI5eJjh/JIu8tPj5q+T7iLvW/JAYUqmE7KOB4R1ZyEhzBaIQpQpardBF5z8A==", + "license": "MIT" + }, + "node_modules/file-entry-cache": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/file-entry-cache/-/file-entry-cache-6.0.1.tgz", + "integrity": "sha512-7Gps/XWymbLk2QLYK4NzpMOrYjMhdIxXuIvy2QBsLE6ljuodKvdkWs/cpyJJ3CVIVpH0Oi1Hvg1ovbMzLdFBBg==", + "dev": true, + "dependencies": { + "flat-cache": "^3.0.4" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/fill-range": { + "version": "7.1.1", + "resolved": "https://registry.npmjs.org/fill-range/-/fill-range-7.1.1.tgz", + "integrity": "sha512-YsGpe3WHLK8ZYi4tWDg2Jy3ebRz2rXowDxnld4bkQB00cc/1Zw9AWnC0i9ztDJitivtQvaI9KaLyKrc+hBW0yg==", + "dev": true, + "dependencies": { + "to-regex-range": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/find-up": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-5.0.0.tgz", + "integrity": "sha512-78/PXT1wlLLDgTzDs7sjq9hzz0vXD+zn+7wypEe4fXQxCmdmqfGsEPQxmiCSQI3ajFV91bVSsvNtrJRiW6nGng==", + "dev": true, + "dependencies": { + "locate-path": "^6.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/flat-cache": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/flat-cache/-/flat-cache-3.2.0.tgz", + "integrity": "sha512-CYcENa+FtcUKLmhhqyctpclsq7QF38pKjZHsGNiSQF5r4FtoKDWabFDl3hzaEQMvT1LHEysw5twgLvpYYb4vbw==", + "dev": true, + "dependencies": { + "flatted": "^3.2.9", + "keyv": "^4.5.3", + "rimraf": "^3.0.2" + }, + "engines": { + "node": "^10.12.0 || >=12.0.0" + } + }, + "node_modules/flatted": { + "version": "3.3.1", + "resolved": "https://registry.npmjs.org/flatted/-/flatted-3.3.1.tgz", + "integrity": "sha512-X8cqMLLie7KsNUDSdzeN8FYK9rEt4Dt67OsG/DNGnYTSDBG4uFAJFBnUeiV+zCVAvwFy56IjM9sH51jVaEhNxw==", + "dev": true + }, + "node_modules/follow-redirects": { + "version": "1.15.9", + "resolved": "https://registry.npmjs.org/follow-redirects/-/follow-redirects-1.15.9.tgz", + "integrity": "sha512-gew4GsXizNgdoRyqmyfMHyAmXsZDk6mHkSxZFCzW9gwlbtOW44CDtYavM+y+72qD/Vq2l550kMF52DT8fOLJqQ==", + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/RubenVerborgh" + } + ], + "engines": { + "node": ">=4.0" + }, + "peerDependenciesMeta": { + "debug": { + "optional": true + } + } + }, + "node_modules/for-each": { + "version": "0.3.3", + "resolved": "https://registry.npmjs.org/for-each/-/for-each-0.3.3.tgz", + "integrity": "sha512-jqYfLp7mo9vIyQf8ykW2v7A+2N4QjeCeI5+Dz9XraiO1ign81wjiH7Fb9vSOWvQfNtmSa4H2RoQTrrXivdUZmw==", + "dev": true, + "dependencies": { + "is-callable": "^1.1.3" + } + }, + "node_modules/form-data": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/form-data/-/form-data-4.0.0.tgz", + "integrity": "sha512-ETEklSGi5t0QMZuiXoA/Q6vcnxcLQP5vdugSpuAyi6SVGi2clPPp+xgEhuMaHC+zGgn31Kd235W35f7Hykkaww==", + "dependencies": { + "asynckit": "^0.4.0", + "combined-stream": "^1.0.8", + "mime-types": "^2.1.12" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/fs.realpath": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/fs.realpath/-/fs.realpath-1.0.0.tgz", + "integrity": "sha512-OO0pH2lK6a0hZnAdau5ItzHPI6pUlvI7jMVnxUQRtw4owF2wk8lOSabtGDCTP4Ggrg2MbGnWO9X8K1t4+fGMDw==", + "dev": true + }, + "node_modules/fsevents": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/fsevents/-/fsevents-2.3.3.tgz", + "integrity": "sha512-5xoDfX+fL7faATnagmWPpbFtwh/R77WmMMqqHGS65C3vvB0YHrgF+B1YmZ3441tMj5n63k0212XNoJwzlhffQw==", + "hasInstallScript": true, + "optional": true, + "os": [ + "darwin" + ], + "engines": { + "node": "^8.16.0 || ^10.6.0 || >=11.0.0" + } + }, + "node_modules/function-bind": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/function-bind/-/function-bind-1.1.2.tgz", + "integrity": "sha512-7XHNxH7qX9xG5mIwxkhumTox/MIRNcOgDrxWsMt2pAr23WHp6MrRlN7FBSFpCpr+oVO0F744iUgR82nJMfG2SA==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/function.prototype.name": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/function.prototype.name/-/function.prototype.name-1.1.6.tgz", + "integrity": "sha512-Z5kx79swU5P27WEayXM1tBi5Ze/lbIyiNgU3qyXUOf9b2rgXYyF9Dy9Cx+IQv/Lc8WCG6L82zwUPpSS9hGehIg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "define-properties": "^1.2.0", + "es-abstract": "^1.22.1", + "functions-have-names": "^1.2.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/functions-have-names": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/functions-have-names/-/functions-have-names-1.2.3.tgz", + "integrity": "sha512-xckBUXyTIqT97tq2x2AMb+g163b5JFysYk0x4qxNFwbfQkmNZoiRHb6sPzI9/QV33WeuvVYBUIiD4NzNIyqaRQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/gensync": { + "version": "1.0.0-beta.2", + "resolved": "https://registry.npmjs.org/gensync/-/gensync-1.0.0-beta.2.tgz", + "integrity": "sha512-3hN7NaskYvMDLQY55gnW3NQ+mesEAepTqlg+VEbj7zzqEMBVNhzcGYYeqFo/TlYz6eQiFcp1HcsCZO+nGgS8zg==", + "dev": true, + "engines": { + "node": ">=6.9.0" + } + }, + "node_modules/geojson-equality-ts": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/geojson-equality-ts/-/geojson-equality-ts-1.0.2.tgz", + "integrity": "sha512-h3Ryq+0mCSN/7yLs0eDgrZhvc9af23o/QuC4aTiuuzP/MRCtd6mf5rLsLRY44jX0RPUfM8c4GqERQmlUxPGPoQ==", + "dependencies": { + "@types/geojson": "^7946.0.14" + } + }, + "node_modules/geojson-polygon-self-intersections": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/geojson-polygon-self-intersections/-/geojson-polygon-self-intersections-1.2.1.tgz", + "integrity": "sha512-/QM1b5u2d172qQVO//9CGRa49jEmclKEsYOQmWP9ooEjj63tBM51m2805xsbxkzlEELQ2REgTf700gUhhlegxA==", + "dependencies": { + "rbush": "^2.0.1" + } + }, + "node_modules/geojson-polygon-self-intersections/node_modules/quickselect": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-1.1.1.tgz", + "integrity": "sha512-qN0Gqdw4c4KGPsBOQafj6yj/PA6c/L63f6CaZ/DCF/xF4Esu3jVmKLUDYxghFx8Kb/O7y9tI7x2RjTSXwdK1iQ==" + }, + "node_modules/geojson-polygon-self-intersections/node_modules/rbush": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-2.0.2.tgz", + "integrity": "sha512-XBOuALcTm+O/H8G90b6pzu6nX6v2zCKiFG4BJho8a+bY6AER6t8uQUZdi5bomQc0AprCWhEGa7ncAbbRap0bRA==", + "dependencies": { + "quickselect": "^1.0.1" + } + }, + "node_modules/geojson-vt": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/geojson-vt/-/geojson-vt-4.0.2.tgz", + "integrity": "sha512-AV9ROqlNqoZEIJGfm1ncNjEXfkz2hdFlZf0qkVfmkwdKa8vj7H16YUOT81rJw1rdFhyEDlN2Tds91p/glzbl5A==" + }, + "node_modules/get-caller-file": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/get-caller-file/-/get-caller-file-2.0.5.tgz", + "integrity": "sha512-DyFP3BM/3YHTQOCUL/w0OZHR0lpKeGrxotcHWcqNEdnltqFwXVfhEBQ94eIo34AfQpo0rGki4cyIiftY06h2Fg==", + "dev": true, + "engines": { + "node": "6.* || 8.* || >= 10.*" + } + }, + "node_modules/get-intrinsic": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/get-intrinsic/-/get-intrinsic-1.2.4.tgz", + "integrity": "sha512-5uYhsJH8VJBTv7oslg4BznJYhDoRI6waYCxMmCdnTrcCrHA/fCFKoTFz2JKKE0HdDFUF7/oQuhzumXJK7paBRQ==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "has-proto": "^1.0.1", + "has-symbols": "^1.0.3", + "hasown": "^2.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-package-type": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/get-package-type/-/get-package-type-0.1.0.tgz", + "integrity": "sha512-pjzuKtY64GYfWizNAJ0fr9VqttZkNiK2iS430LtIHzjBEr6bX8Am2zm4sW4Ro5wjWW5cAlRL1qAMTcXbjNAO2Q==", + "dev": true, + "engines": { + "node": ">=8.0.0" + } + }, + "node_modules/get-stream": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/get-stream/-/get-stream-6.0.1.tgz", + "integrity": "sha512-ts6Wi+2j3jQjqi70w5AlN8DFnkSwC+MqmxEzdEALB2qXZYV3X/b1CTfgPLGJNMeAWxdPfU8FO1ms3NUfaHCPYg==", + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/get-symbol-description": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/get-symbol-description/-/get-symbol-description-1.0.2.tgz", + "integrity": "sha512-g0QYk1dZBxGwk+Ngc+ltRH2IBp2f7zBkBMBJZCDerh6EhlhSR6+9irMCuT/09zD6qkarHUSn529sK/yL4S27mg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/get-tsconfig": { + "version": "4.8.1", + "resolved": "https://registry.npmjs.org/get-tsconfig/-/get-tsconfig-4.8.1.tgz", + "integrity": "sha512-k9PN+cFBmaLWtVz29SkUoqU5O0slLuHJXt/2P+tMVFT+phsSGXGkp9t3rQIqdz0e+06EHNGs3oM6ZX1s2zHxRg==", + "dev": true, + "dependencies": { + "resolve-pkg-maps": "^1.0.0" + }, + "funding": { + "url": "https://github.com/privatenumber/get-tsconfig?sponsor=1" + } + }, + "node_modules/get-value": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/get-value/-/get-value-2.0.6.tgz", + "integrity": "sha512-Ln0UQDlxH1BapMu3GPtf7CuYNwRZf2gwCuPqbyG6pB8WfmFpzqcy4xtAaAMUhnNqjMKTiCPZG2oMT3YSx8U2NA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/gl-matrix": { + "version": "3.4.3", + "resolved": "https://registry.npmjs.org/gl-matrix/-/gl-matrix-3.4.3.tgz", + "integrity": "sha512-wcCp8vu8FT22BnvKVPjXa/ICBWRq/zjFfdofZy1WSpQZpphblv12/bOQLBC1rMM7SGOFS9ltVmKOHil5+Ml7gA==" + }, + "node_modules/glob": { + "version": "7.2.3", + "resolved": "https://registry.npmjs.org/glob/-/glob-7.2.3.tgz", + "integrity": "sha512-nFR0zLpU2YCaRxwoCJvL6UvCH2JFyFVIvwTLsIf21AuHlMskA1hhTdk+LlYJtOlYt9v6dvszD2BGRqBL+iQK9Q==", + "deprecated": "Glob versions prior to v9 are no longer supported", + "dev": true, + "dependencies": { + "fs.realpath": "^1.0.0", + "inflight": "^1.0.4", + "inherits": "2", + "minimatch": "^3.1.1", + "once": "^1.3.0", + "path-is-absolute": "^1.0.0" + }, + "engines": { + "node": "*" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/glob-parent": { + "version": "6.0.2", + "resolved": "https://registry.npmjs.org/glob-parent/-/glob-parent-6.0.2.tgz", + "integrity": "sha512-XxwI8EOhVQgWp6iDL+3b0r86f4d6AX6zSU55HfB4ydCEuXLXc5FcYeOu+nnGftS4TEju/11rt4KJPTMgbfmv4A==", + "dev": true, + "dependencies": { + "is-glob": "^4.0.3" + }, + "engines": { + "node": ">=10.13.0" + } + }, + "node_modules/glob/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/glob/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/global-prefix": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/global-prefix/-/global-prefix-4.0.0.tgz", + "integrity": "sha512-w0Uf9Y9/nyHinEk5vMJKRie+wa4kR5hmDbEhGGds/kG1PwGLLHKRoNMeJOyCQjjBkANlnScqgzcFwGHgmgLkVA==", + "dependencies": { + "ini": "^4.1.3", + "kind-of": "^6.0.3", + "which": "^4.0.0" + }, + "engines": { + "node": ">=16" + } + }, + "node_modules/global-prefix/node_modules/isexe": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-3.1.1.tgz", + "integrity": "sha512-LpB/54B+/2J5hqQ7imZHfdU31OlgQqx7ZicVlkm9kzg9/w8GKLEcFfJl/t7DCEDueOyBAD6zCCwTO6Fzs0NoEQ==", + "engines": { + "node": ">=16" + } + }, + "node_modules/global-prefix/node_modules/which": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/which/-/which-4.0.0.tgz", + "integrity": "sha512-GlaYyEb07DPxYCKhKzplCWBJtvxZcZMrL+4UkrTSJHHPyZU4mYYTv3qaOe77H7EODLSSopAUFAc6W8U4yqvscg==", + "dependencies": { + "isexe": "^3.1.1" + }, + "bin": { + "node-which": "bin/which.js" + }, + "engines": { + "node": "^16.13.0 || >=18.0.0" + } + }, + "node_modules/globals": { + "version": "13.24.0", + "resolved": "https://registry.npmjs.org/globals/-/globals-13.24.0.tgz", + "integrity": "sha512-AhO5QUcj8llrbG09iWhPU2B204J1xnPeL8kQmVorSsy+Sjj1sk8gIyh6cUocGmH4L0UuhAJy+hJMRA4mgA4mFQ==", + "dev": true, + "dependencies": { + "type-fest": "^0.20.2" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/globalthis": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/globalthis/-/globalthis-1.0.4.tgz", + "integrity": "sha512-DpLKbNU4WylpxJykQujfCcwYWiV/Jhm50Goo0wrVILAv5jOr9d+H+UR3PhSCD2rCCEIg0uc+G+muBTwD54JhDQ==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "gopd": "^1.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/globby": { + "version": "11.1.0", + "resolved": "https://registry.npmjs.org/globby/-/globby-11.1.0.tgz", + "integrity": "sha512-jhIXaOzy1sb8IyocaruWSn1TjmnBVs8Ayhcy83rmxNJ8q2uWKCAj3CnJY+KpGSXCueAPc0i05kVvVKtP1t9S3g==", + "dev": true, + "dependencies": { + "array-union": "^2.1.0", + "dir-glob": "^3.0.1", + "fast-glob": "^3.2.9", + "ignore": "^5.2.0", + "merge2": "^1.4.1", + "slash": "^3.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/gopd": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/gopd/-/gopd-1.0.1.tgz", + "integrity": "sha512-d65bNlIadxvpb/A2abVdlqKqV563juRnZ1Wtk6s1sIR8uNsXR70xqIzVqxVf1eTqDunwT2MkczEeaezCKTZhwA==", + "dev": true, + "dependencies": { + "get-intrinsic": "^1.1.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/graceful-fs": { + "version": "4.2.11", + "resolved": "https://registry.npmjs.org/graceful-fs/-/graceful-fs-4.2.11.tgz", + "integrity": "sha512-RbJ5/jmFcNNCcDV5o9eTnBLJ/HszWV0P73bc+Ff4nS/rJj+YaS6IGyiOL0VoBYX+l1Wrl3k63h/KrH+nhJ0XvQ==", + "dev": true + }, + "node_modules/graphemer": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/graphemer/-/graphemer-1.4.0.tgz", + "integrity": "sha512-EtKwoO6kxCL9WO5xipiHTZlSzBm7WLT627TqC/uVRd0HKmq8NXyebnNYxDoBi7wt8eTWrUrKXCOVaFq9x1kgag==", + "dev": true + }, + "node_modules/grid-index": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/grid-index/-/grid-index-1.1.0.tgz", + "integrity": "sha512-HZRwumpOGUrHyxO5bqKZL0B0GlUpwtCAzZ42sgxUPniu33R1LSFH5yrIcBCHjkctCAh3mtWKcKd9J4vDDdeVHA==", + "dev": true + }, + "node_modules/has-bigints": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-bigints/-/has-bigints-1.0.2.tgz", + "integrity": "sha512-tSvCKtBr9lkF0Ex0aQiP9N+OpV4zi2r/Nee5VkRDbaqv35RLYMzbwQfFSZZH0kR+Rd6302UJZ2p/bJCEoR3VoQ==", + "dev": true, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-flag": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/has-flag/-/has-flag-4.0.0.tgz", + "integrity": "sha512-EykJT/Q1KjTWctppgIAgfSO0tKVuZUjhgMr17kqTumMl6Afv3EISleU7qZUzoXDFTAHTDC4NOoG/ZxU3EvlMPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/has-property-descriptors": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-property-descriptors/-/has-property-descriptors-1.0.2.tgz", + "integrity": "sha512-55JNKuIW+vq4Ke1BjOTjM2YctQIvCT7GFzHwmfZPGo5wnrgkid0YQtnAleFSqumZm4az3n2BS+erby5ipJdgrg==", + "dev": true, + "dependencies": { + "es-define-property": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-proto": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-proto/-/has-proto-1.0.3.tgz", + "integrity": "sha512-SJ1amZAJUiZS+PhsVLf5tGydlaVB8EdFpaSO4gmiUKUOxk8qzn5AIy4ZeJUmh22znIdk/uMAUT2pl3FxzVUH+Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-symbols": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/has-symbols/-/has-symbols-1.0.3.tgz", + "integrity": "sha512-l3LCuF6MgDNwTDKkdYGEihYjt5pRPbEg46rtlmnSPlUbgmB8LOIrKJbYYFBSbnPaJexMKtiPO8hmeRjRz2Td+A==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/has-tostringtag": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/has-tostringtag/-/has-tostringtag-1.0.2.tgz", + "integrity": "sha512-NqADB8VjPFLM2V0VvHUewwwsw0ZWBaIdgo+ieHtK3hasLz4qeCRjYcqfB6AQrBggRKppKF8L52/VqdVsO47Dlw==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/hasown": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/hasown/-/hasown-2.0.2.tgz", + "integrity": "sha512-0hJU9SCPvmMzIBdZFqNPXWa6dqh7WdH0cII9y+CyS8rG3nL48Bclra9HmKhVVUHyPWNH5Y7xDwAB7bfgSjkUMQ==", + "dev": true, + "dependencies": { + "function-bind": "^1.1.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/he": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/he/-/he-1.2.0.tgz", + "integrity": "sha512-F/1DnUGPopORZi0ni+CvrCgHQ5FyEAHRLSApuYWMmrbSwoN2Mn/7k+Gl38gJnR7yyDZk6WLXwiGod1JOWNDKGw==", + "dev": true, + "bin": { + "he": "bin/he" + } + }, + "node_modules/html-escaper": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/html-escaper/-/html-escaper-2.0.2.tgz", + "integrity": "sha512-H2iMtd0I4Mt5eYiapRdIDjp+XzelXQ0tFE4JS7YFwFevXXMmOp9myNrUvCg0D6ws8iqkRPBfKHgbwig1SmlLfg==", + "dev": true + }, + "node_modules/human-signals": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/human-signals/-/human-signals-2.1.0.tgz", + "integrity": "sha512-B4FFZ6q/T2jhhksgkbEW3HBvWIfDW85snkQgawt07S7J5QXTk6BkNV+0yAeZrM5QpMAdYlocGoljn0sJ/WQkFw==", + "dev": true, + "engines": { + "node": ">=10.17.0" + } + }, + "node_modules/iconv-lite": { + "version": "0.6.3", + "resolved": "https://registry.npmjs.org/iconv-lite/-/iconv-lite-0.6.3.tgz", + "integrity": "sha512-4fCk79wshMdzMp2rH06qWrJE4iolqLhCUH+OiuIgU++RB0+94NlDL81atO7GX55uUKueo0txHNtvEyI6D7WdMw==", + "dependencies": { + "safer-buffer": ">= 2.1.2 < 3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/ieee754": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/ieee754/-/ieee754-1.2.1.tgz", + "integrity": "sha512-dcyqhDvX1C46lXZcVqCpK+FtMRQVdIMN6/Df5js2zouUsqG7I6sFxitIC+7KYK29KdXOLHdu9zL4sFnoVQnqaA==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/ignore": { + "version": "5.3.2", + "resolved": "https://registry.npmjs.org/ignore/-/ignore-5.3.2.tgz", + "integrity": "sha512-hsBTNUqQTDwkWtcdYI2i06Y/nUBEsNEDJKjWdigLvegy8kDuJAS8uRlpkkcQpyEXL0Z/pjDy5HBmMjRCJ2gq+g==", + "dev": true, + "engines": { + "node": ">= 4" + } + }, + "node_modules/import-fresh": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/import-fresh/-/import-fresh-3.3.0.tgz", + "integrity": "sha512-veYYhQa+D1QBKznvhUHxb8faxlrwUnxseDAbAp457E0wLNio2bOSKnjYDhMj+YiAq61xrMGhQk9iXVk5FzgQMw==", + "dev": true, + "dependencies": { + "parent-module": "^1.0.0", + "resolve-from": "^4.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/import-local": { + "version": "3.2.0", + "resolved": "https://registry.npmjs.org/import-local/-/import-local-3.2.0.tgz", + "integrity": "sha512-2SPlun1JUPWoM6t3F0dw0FkCF/jWY8kttcY4f599GLTSjh2OCuuhdTkJQsEcZzBqbXZGKMK2OqW1oZsjtf/gQA==", + "dev": true, + "dependencies": { + "pkg-dir": "^4.2.0", + "resolve-cwd": "^3.0.0" + }, + "bin": { + "import-local-fixture": "fixtures/cli.js" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/imurmurhash": { + "version": "0.1.4", + "resolved": "https://registry.npmjs.org/imurmurhash/-/imurmurhash-0.1.4.tgz", + "integrity": "sha512-JmXMZ6wuvDmLiHEml9ykzqO6lwFbof0GG4IkcGaENdCRDDmMVnny7s5HsIgHCbaq0w2MyPhDqkhTUgS2LU2PHA==", + "dev": true, + "engines": { + "node": ">=0.8.19" + } + }, + "node_modules/inflight": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/inflight/-/inflight-1.0.6.tgz", + "integrity": "sha512-k92I/b08q4wvFscXCLvqfsHCrjrF7yiXsQuIVvVE7N82W3+aqpzuUdBbfhWcy/FZR3/4IgflMgKLOsvPDrGCJA==", + "deprecated": "This module is not supported, and leaks memory. Do not use it. Check out lru-cache if you want a good and tested way to coalesce async requests by a key value, which is much more comprehensive and powerful.", + "dev": true, + "dependencies": { + "once": "^1.3.0", + "wrappy": "1" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==", + "dev": true + }, + "node_modules/ini": { + "version": "4.1.3", + "resolved": "https://registry.npmjs.org/ini/-/ini-4.1.3.tgz", + "integrity": "sha512-X7rqawQBvfdjS10YU1y1YVreA3SsLrW9dX2CewP2EbBJM4ypVNLDkO5y04gejPwKIY9lR+7r9gn3rFPt/kmWFg==", + "engines": { + "node": "^14.17.0 || ^16.13.0 || >=18.0.0" + } + }, + "node_modules/internal-slot": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/internal-slot/-/internal-slot-1.0.7.tgz", + "integrity": "sha512-NGnrKwXzSms2qUUih/ILZ5JBqNTSa1+ZmP6flaIp6KmSElgE9qdndzS3cqjrDovwFdmwsGsLdeFgB6suw+1e9g==", + "dev": true, + "dependencies": { + "es-errors": "^1.3.0", + "hasown": "^2.0.0", + "side-channel": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/internmap": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/internmap/-/internmap-2.0.3.tgz", + "integrity": "sha512-5Hh7Y1wQbvY5ooGgPbDaL5iYLAPzMTUrjMulskHLH6wnv/A+1q5rgEaiuqEjB+oxGXIVZs1FF+R/KPN3ZSQYYg==", + "engines": { + "node": ">=12" + } + }, + "node_modules/is-arguments": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/is-arguments/-/is-arguments-1.1.1.tgz", + "integrity": "sha512-8Q7EARjzEnKpt/PCD7e1cgUS0a6X8u5tdSiMqXhojOdoV9TsMsiO+9VLC5vAmO8N7/GmXn7yjR8qnA6bVAEzfA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-array-buffer": { + "version": "3.0.4", + "resolved": "https://registry.npmjs.org/is-array-buffer/-/is-array-buffer-3.0.4.tgz", + "integrity": "sha512-wcjaerHw0ydZwfhiKbXJWLDY8A7yV7KhjQOpb83hGgGfId/aQa4TOvwyzn2PuswW2gPCYEL/nEAiSVpdOj1lXw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "get-intrinsic": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-arrayish": { + "version": "0.2.1", + "resolved": "https://registry.npmjs.org/is-arrayish/-/is-arrayish-0.2.1.tgz", + "integrity": "sha512-zz06S8t0ozoDXMG+ube26zeCTNXcKIPJZJi8hBrF4idCLms4CG9QtK7qBl1boi5ODzFpjswb5JPmHCbMpjaYzg==", + "dev": true + }, + "node_modules/is-async-function": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/is-async-function/-/is-async-function-2.0.0.tgz", + "integrity": "sha512-Y1JXKrfykRJGdlDwdKlLpLyMIiWqWvuSd17TvZk68PLAOGOoF4Xyav1z0Xhoi+gCYjZVeC5SI+hYFOfvXmGRCA==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bigint": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-bigint/-/is-bigint-1.0.4.tgz", + "integrity": "sha512-zB9CruMamjym81i2JZ3UMn54PKGsQzsJeo6xvN3HJJ4CAsQNB6iRutp2To77OfCNuoxspsIhzaPoO1zyCEhFOg==", + "dev": true, + "dependencies": { + "has-bigints": "^1.0.1" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-boolean-object": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/is-boolean-object/-/is-boolean-object-1.1.2.tgz", + "integrity": "sha512-gDYaKHJmnj4aWxyj6YHyXVpdQawtVLHU5cb+eztPGczf6cjuTdwve5ZIEfgXqH4e57An1D1AKf8CZ3kYrQRqYA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-bun-module": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/is-bun-module/-/is-bun-module-1.2.1.tgz", + "integrity": "sha512-AmidtEM6D6NmUiLOvvU7+IePxjEjOzra2h0pSrsfSAcXwl/83zLLXDByafUJy9k/rKK0pvXMLdwKwGHlX2Ke6Q==", + "dev": true, + "dependencies": { + "semver": "^7.6.3" + } + }, + "node_modules/is-callable": { + "version": "1.2.7", + "resolved": "https://registry.npmjs.org/is-callable/-/is-callable-1.2.7.tgz", + "integrity": "sha512-1BC0BVFhS/p0qtw6enp8e+8OD0UrK0oFLztSjNzhcKA3WDuJxxAPXzPuPtKkjEY9UUoEWlX/8fgKeu2S8i9JTA==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-core-module": { + "version": "2.15.1", + "resolved": "https://registry.npmjs.org/is-core-module/-/is-core-module-2.15.1.tgz", + "integrity": "sha512-z0vtXSwucUJtANQWldhbtbt7BnL0vxiFjIdDLAatwhDYty2bad6s+rijD6Ri4YuYJubLzIJLUidCh09e1djEVQ==", + "dev": true, + "dependencies": { + "hasown": "^2.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-data-view": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-data-view/-/is-data-view-1.0.1.tgz", + "integrity": "sha512-AHkaJrsUVW6wq6JS8y3JnM/GJF/9cf+k20+iDzlSaJrinEo5+7vRiteOSwBhHRiAyQATN1AmY4hwzxJKPmYf+w==", + "dev": true, + "dependencies": { + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-date-object": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/is-date-object/-/is-date-object-1.0.5.tgz", + "integrity": "sha512-9YQaSxsAiSwcvS33MBk3wTCVnWK+HhF8VZR2jRxehM16QcVOdHqPn4VPHmRK4lSr38n9JriurInLcP90xsYNfQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-extendable": { + "version": "0.1.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-0.1.1.tgz", + "integrity": "sha512-5BMULNob1vgFX6EjQw5izWDxrecWK9AM72rugNr0TFldMOi0fj6Jk+zeKIt0xGj4cEfQIJth4w3OKWOJ4f+AFw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-extglob": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/is-extglob/-/is-extglob-2.1.1.tgz", + "integrity": "sha512-SbKbANkN603Vi4jEZv49LeVJMn4yGwsbzZworEoyEiutsN3nJYdbO36zfhGJ6QEDpOZIFkDtnq5JRxmvl3jsoQ==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-finalizationregistry": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-finalizationregistry/-/is-finalizationregistry-1.0.2.tgz", + "integrity": "sha512-0by5vtUJs8iFQb5TYUHHPudOR+qXYIMKtiUzvLIZITZUjknFmziyBJuLhVRc+Ds0dREFlskDNJKYIdIzu/9pfw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-fullwidth-code-point": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/is-fullwidth-code-point/-/is-fullwidth-code-point-3.0.0.tgz", + "integrity": "sha512-zymm5+u+sCsSWyD9qNaejV3DFvhCKclKdizYaJUuHA83RLjb7nSuGnddCHGv0hk+KY7BMAlsWeK4Ueg6EV6XQg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-generator-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/is-generator-fn/-/is-generator-fn-2.1.0.tgz", + "integrity": "sha512-cTIB4yPYL/Grw0EaSzASzg6bBy9gqCofvWN8okThAYIxKJZC+udlRAmGbM0XLeniEJSs8uEgHPGuHSe1XsOLSQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/is-generator-function": { + "version": "1.0.10", + "resolved": "https://registry.npmjs.org/is-generator-function/-/is-generator-function-1.0.10.tgz", + "integrity": "sha512-jsEjy9l3yiXEQ+PsXdmBwEPcOxaXWLspKdplFUVI9vq1iZgIekeC0L167qeu86czQaxed3q/Uzuw0swL0irL8A==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-glob": { + "version": "4.0.3", + "resolved": "https://registry.npmjs.org/is-glob/-/is-glob-4.0.3.tgz", + "integrity": "sha512-xelSayHH36ZgE7ZWhli7pW34hNbNl8Ojv5KVmkJD4hBdD3th8Tfk9vYasLM+mXWOZhFkgZfxhLSnrwRr4elSSg==", + "dev": true, + "dependencies": { + "is-extglob": "^2.1.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-map": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-map/-/is-map-2.0.3.tgz", + "integrity": "sha512-1Qed0/Hr2m+YqxnM09CjA2d/i6YZNfF6R2oRAOj36eUdS6qIV/huPJNSEpKbupewFs+ZsJlxsjjPbc0/afW6Lw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-negative-zero": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-negative-zero/-/is-negative-zero-2.0.3.tgz", + "integrity": "sha512-5KoIu2Ngpyek75jXodFvnafB6DJgr3u8uuK0LEZJjrU19DrMD3EVERaR8sjz8CCGgpZvxPl9SuE1GMVPFHx1mw==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-number": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/is-number/-/is-number-7.0.0.tgz", + "integrity": "sha512-41Cifkg6e8TylSpdtTpeLVMqvSBEVzTttHvERD741+pnZ8ANv0004MRL43QKPDlK9cGvNp6NZWZUBlbGXYxxng==", + "dev": true, + "engines": { + "node": ">=0.12.0" + } + }, + "node_modules/is-number-object": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-number-object/-/is-number-object-1.0.7.tgz", + "integrity": "sha512-k1U0IRzLMo7ZlYIfzRu23Oh6MiIFasgpb9X76eqfFZAqwH44UI4KTBvBYIZ1dSL9ZzChTB9ShHfLkR4pdW5krQ==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-path-inside": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/is-path-inside/-/is-path-inside-3.0.3.tgz", + "integrity": "sha512-Fd4gABb+ycGAmKou8eMftCupSir5lRxqf4aD/vd0cD2qc4HL07OjCeuHMr8Ro4CoMaeCKDB0/ECBOVWjTwUvPQ==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/is-plain-object": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/is-plain-object/-/is-plain-object-2.0.4.tgz", + "integrity": "sha512-h5PpgXkWitc38BBMYawTYMWJHFZJVnBquFE57xFpjB8pJFiF6gZ+bU+WyI/yqXiFR5mdLsgYNaPe8uao6Uv9Og==", + "dependencies": { + "isobject": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/is-regex": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/is-regex/-/is-regex-1.1.4.tgz", + "integrity": "sha512-kvRdxDsxZjhzUX07ZnLydzS1TU/TJlTUHHY4YLL87e37oUA49DfkLqgy+VjFocowy29cKvcSiu+kIv728jTTVg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-set": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-set/-/is-set-2.0.3.tgz", + "integrity": "sha512-iPAjerrse27/ygGLxw+EBR9agv9Y6uLeYVJMu+QNCoouJ1/1ri0mGrcWpfCqFZuzzx3WjtwxG098X+n4OuRkPg==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-shared-array-buffer": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/is-shared-array-buffer/-/is-shared-array-buffer-1.0.3.tgz", + "integrity": "sha512-nA2hv5XIhLR3uVzDDfCIknerhx8XUKnstuOERPNNIinXG7v9u+ohXF67vxm4TPTEPU6lm61ZkwP3c9PCB97rhg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-stream": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/is-stream/-/is-stream-2.0.1.tgz", + "integrity": "sha512-hFoiJiTl63nn+kstHGBtewWSKnQLpyb155KHheA1l39uvtO9nWIop1p3udqPcUd/xbF1VLMO4n7OI6p7RbngDg==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/is-string": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/is-string/-/is-string-1.0.7.tgz", + "integrity": "sha512-tE2UXzivje6ofPW7l23cjDOMa09gb7xlAqG6jG5ej6uPV32TlWP3NKPigtaGeHNu9fohccRYvIiZMfOOnOYUtg==", + "dev": true, + "dependencies": { + "has-tostringtag": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-symbol": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/is-symbol/-/is-symbol-1.0.4.tgz", + "integrity": "sha512-C/CPBqKWnvdcxqIARxyOh4v1UUEOCHpgDa0WYgpKDFMszcrPcffg5uhwSgPCLD2WWxmq6isisz87tzT01tuGhg==", + "dev": true, + "dependencies": { + "has-symbols": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-typed-array": { + "version": "1.1.13", + "resolved": "https://registry.npmjs.org/is-typed-array/-/is-typed-array-1.1.13.tgz", + "integrity": "sha512-uZ25/bUAlUY5fR4OKT4rZQEBrzQWYV9ZJYGGsUmEJ6thodVJ1HX64ePQ6Z0qPWP+m+Uq6e9UugrE38jeYsDSMw==", + "dev": true, + "dependencies": { + "which-typed-array": "^1.1.14" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakmap": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/is-weakmap/-/is-weakmap-2.0.2.tgz", + "integrity": "sha512-K5pXYOm9wqY1RgjpL3YTkF39tni1XajUIkawTLUo9EZEVUFga5gSQJF8nNS7ZwJQ02y+1YCNYcMh+HIf1ZqE+w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakref": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/is-weakref/-/is-weakref-1.0.2.tgz", + "integrity": "sha512-qctsuLZmIQ0+vSSMfoVvyFe2+GSEvnmZ2ezTup1SBse9+twCCeial6EEi3Nc2KFcf6+qz2FBPnjXsk8xhKSaPQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/is-weakset": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/is-weakset/-/is-weakset-2.0.3.tgz", + "integrity": "sha512-LvIm3/KWzS9oRFHugab7d+M/GcBXuXX5xZkzPmN+NxihdQlZUQ4dWuSV1xR/sq6upL1TJEDrfBgRepHFdBtSNQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/isarray": { + "version": "2.0.5", + "resolved": "https://registry.npmjs.org/isarray/-/isarray-2.0.5.tgz", + "integrity": "sha512-xHjhDr3cNBK0BzdUJSPXZntQUx/mwMS5Rw4A7lPJ90XGAO6ISP/ePDNuo0vhqOZU+UD5JoodwCAAoZQd3FeAKw==", + "dev": true + }, + "node_modules/isexe": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/isexe/-/isexe-2.0.0.tgz", + "integrity": "sha512-RHxMLp9lnKHGHRng9QFhRCMbYAcVpn69smSGcq3f36xjgVVWThj4qqLbTLlq7Ssj8B+fIQ1EuCEGI2lKsyQeIw==", + "dev": true + }, + "node_modules/isobject": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/isobject/-/isobject-3.0.1.tgz", + "integrity": "sha512-WhB9zCku7EGTj/HQQRz5aUQEUeoQZH2bWcltRErOpymJ4boYE6wL9Tbr23krRPSZ+C5zqNSrSw+Cc7sZZ4b7vg==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/istanbul-lib-coverage": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/istanbul-lib-coverage/-/istanbul-lib-coverage-3.2.2.tgz", + "integrity": "sha512-O8dpsF+r0WV/8MNRKfnmrtCWhuKjxrq2w+jpzBL5UZKTi2LeVWnWOmWRxFlesJONmc+wLAGvKQZEOanko0LFTg==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/istanbul-lib-instrument": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/istanbul-lib-instrument/-/istanbul-lib-instrument-6.0.3.tgz", + "integrity": "sha512-Vtgk7L/R2JHyyGW07spoFlB8/lpjiOLTjMdms6AFMraYt3BaJauod/NGrfnVG/y4Ix1JEuMRPDPEj2ua+zz1/Q==", + "dev": true, + "dependencies": { + "@babel/core": "^7.23.9", + "@babel/parser": "^7.23.9", + "@istanbuljs/schema": "^0.1.3", + "istanbul-lib-coverage": "^3.2.0", + "semver": "^7.5.4" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-report": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-report/-/istanbul-lib-report-3.0.1.tgz", + "integrity": "sha512-GCfE1mtsHGOELCU8e/Z7YWzpmybrx/+dSTfLrvY8qRmaY6zXTKWn6WQIjaAFw069icm6GVMNkgu0NzI4iPZUNw==", + "dev": true, + "dependencies": { + "istanbul-lib-coverage": "^3.0.0", + "make-dir": "^4.0.0", + "supports-color": "^7.1.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-lib-source-maps": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/istanbul-lib-source-maps/-/istanbul-lib-source-maps-4.0.1.tgz", + "integrity": "sha512-n3s8EwkdFIJCG3BPKBYvskgXGoy88ARzvegkitk60NxRdwltLOTaH7CUiMRXvwYorl0Q712iEjcWB+fK/MrWVw==", + "dev": true, + "dependencies": { + "debug": "^4.1.1", + "istanbul-lib-coverage": "^3.0.0", + "source-map": "^0.6.1" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/istanbul-reports": { + "version": "3.1.7", + "resolved": "https://registry.npmjs.org/istanbul-reports/-/istanbul-reports-3.1.7.tgz", + "integrity": "sha512-BewmUXImeuRk2YY0PVbxgKAysvhRPUQE0h5QRM++nVWyubKGV0l8qQ5op8+B2DOmwSe63Jivj0BjkPQVf8fP5g==", + "dev": true, + "dependencies": { + "html-escaper": "^2.0.0", + "istanbul-lib-report": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/iterator.prototype": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/iterator.prototype/-/iterator.prototype-1.1.2.tgz", + "integrity": "sha512-DR33HMMr8EzwuRL8Y9D3u2BMj8+RqSE850jfGu59kS7tbmPLzGkZmVSfyCFSDxuZiEY6Rzt3T2NA/qU+NwVj1w==", + "dev": true, + "dependencies": { + "define-properties": "^1.2.1", + "get-intrinsic": "^1.2.1", + "has-symbols": "^1.0.3", + "reflect.getprototypeof": "^1.0.4", + "set-function-name": "^2.0.1" + } + }, + "node_modules/jest": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest/-/jest-29.7.0.tgz", + "integrity": "sha512-NIy3oAFp9shda19hy4HK0HRTWKtPJmGdnvywu01nOqNC2vZg+Z+fvJDxpMQA88eb2I9EcafcdjYgsDthnYTvGw==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/types": "^29.6.3", + "import-local": "^3.0.2", + "jest-cli": "^29.7.0" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-changed-files": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-changed-files/-/jest-changed-files-29.7.0.tgz", + "integrity": "sha512-fEArFiwf1BpQ+4bXSprcDc3/x4HSzL4al2tozwVpDFpsxALjLYdyiIK4e5Vz66GQJIbXJ82+35PtysofptNX2w==", + "dev": true, + "dependencies": { + "execa": "^5.0.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-circus": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-circus/-/jest-circus-29.7.0.tgz", + "integrity": "sha512-3E1nCMgipcTkCocFwM90XXQab9bS+GMsjdpmPrlelaxwD93Ad8iVEjX/vvHPdLPnFf+L40u+5+iutRdA1N9myw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/expect": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "co": "^4.6.0", + "dedent": "^1.0.0", + "is-generator-fn": "^2.0.0", + "jest-each": "^29.7.0", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "p-limit": "^3.1.0", + "pretty-format": "^29.7.0", + "pure-rand": "^6.0.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-cli": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-cli/-/jest-cli-29.7.0.tgz", + "integrity": "sha512-OVVobw2IubN/GSYsxETi+gOe7Ka59EFMR/twOU3Jb2GnKKeMGJB5SGUUrEz3SFVmJASUdZUzy83sLNNQ2gZslg==", + "dev": true, + "dependencies": { + "@jest/core": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "create-jest": "^29.7.0", + "exit": "^0.1.2", + "import-local": "^3.0.2", + "jest-config": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "yargs": "^17.3.1" + }, + "bin": { + "jest": "bin/jest.js" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "node-notifier": "^8.0.1 || ^9.0.0 || ^10.0.0" + }, + "peerDependenciesMeta": { + "node-notifier": { + "optional": true + } + } + }, + "node_modules/jest-config": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-config/-/jest-config-29.7.0.tgz", + "integrity": "sha512-uXbpfeQ7R6TZBqI3/TxCU4q4ttk3u0PJeC+E0zbfSoSjq6bJ7buBPxzQPL0ifrkY4DNu4JUdk0ImlBUYi840eQ==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@jest/test-sequencer": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-jest": "^29.7.0", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "deepmerge": "^4.2.2", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-circus": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-runner": "^29.7.0", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "micromatch": "^4.0.4", + "parse-json": "^5.2.0", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "strip-json-comments": "^3.1.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "peerDependencies": { + "@types/node": "*", + "ts-node": ">=9.0.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "ts-node": { + "optional": true + } + } + }, + "node_modules/jest-diff": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-diff/-/jest-diff-29.7.0.tgz", + "integrity": "sha512-LMIgiIrhigmPrs03JHpxUh2yISK3vLFPkAodPeo0+BuF7wA2FoQbkEg1u8gBYBThncu7e1oEDUfIXVuTqLRUjw==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "diff-sequences": "^29.6.3", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-docblock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-docblock/-/jest-docblock-29.7.0.tgz", + "integrity": "sha512-q617Auw3A612guyaFgsbFeYpNP5t2aoUNLwBUbc/0kD1R4t9ixDbyFTHd1nok4epoVFpr7PmeWHrhvuV3XaJ4g==", + "dev": true, + "dependencies": { + "detect-newline": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-each": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-each/-/jest-each-29.7.0.tgz", + "integrity": "sha512-gns+Er14+ZrEoC5fhOfYCY1LOHHr0TI+rQUHZS8Ttw2l7gl+80eHc/gFf2Ktkw0+SIACDTeWvpFcv3B04VembQ==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "jest-util": "^29.7.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-environment-node": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-environment-node/-/jest-environment-node-29.7.0.tgz", + "integrity": "sha512-DOSwCRqXirTOyheM+4d5YZOrWcdu0LNZ87ewUoywbcb2XR4wKgqiG8vNeYwhjFMbEkfju7wx2GYH0P2gevGvFw==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-mock": "^29.7.0", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-get-type": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-get-type/-/jest-get-type-29.6.3.tgz", + "integrity": "sha512-zrteXnqYxfQh7l5FHyL38jL39di8H8rHoecLH3JNxH3BwOrBsNeabdap5e0I23lD4HHI8W5VFBZqG4Eaq5LNcw==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-haste-map": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-haste-map/-/jest-haste-map-29.7.0.tgz", + "integrity": "sha512-fP8u2pyfqx0K1rGn1R9pyE0/KTn+G7PxktWidOBTqFPLYX0b9ksaMFkhK5vrS3DVun09pckLdlx90QthlW7AmA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/graceful-fs": "^4.1.3", + "@types/node": "*", + "anymatch": "^3.0.3", + "fb-watchman": "^2.0.0", + "graceful-fs": "^4.2.9", + "jest-regex-util": "^29.6.3", + "jest-util": "^29.7.0", + "jest-worker": "^29.7.0", + "micromatch": "^4.0.4", + "walker": "^1.0.8" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + }, + "optionalDependencies": { + "fsevents": "^2.3.2" + } + }, + "node_modules/jest-leak-detector": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-leak-detector/-/jest-leak-detector-29.7.0.tgz", + "integrity": "sha512-kYA8IJcSYtST2BY9I+SMC32nDpBT3J2NvWJx8+JCuCdl/CR1I4EKUJROiP8XtCcxqgTTBGJNdbB1A8XRKbTetw==", + "dev": true, + "dependencies": { + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-matcher-utils": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-matcher-utils/-/jest-matcher-utils-29.7.0.tgz", + "integrity": "sha512-sBkD+Xi9DtcChsI3L3u0+N0opgPYnCRPtGcQYrgXmR+hmt/fYfWAL0xRXYU8eWOdfuLgBe0YCW3AFtnRLagq/g==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-message-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-message-util/-/jest-message-util-29.7.0.tgz", + "integrity": "sha512-GBEV4GRADeP+qtB2+6u61stea8mGcOT4mCtrYISZwfu9/ISHFJ/5zOMXYbpBE9RsS5+Gb63DW4FgmnKJ79Kf6w==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.12.13", + "@jest/types": "^29.6.3", + "@types/stack-utils": "^2.0.0", + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "micromatch": "^4.0.4", + "pretty-format": "^29.7.0", + "slash": "^3.0.0", + "stack-utils": "^2.0.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-mock": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-mock/-/jest-mock-29.7.0.tgz", + "integrity": "sha512-ITOMZn+UkYS4ZFh83xYAOzWStloNzJFO2s8DWrE4lhtGD+AorgnbkiKERe4wQVBydIGPx059g6riW5Btp6Llnw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "jest-util": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-pnp-resolver": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/jest-pnp-resolver/-/jest-pnp-resolver-1.2.3.tgz", + "integrity": "sha512-+3NpwQEnRoIBtx4fyhblQDPgJI0H1IEIkX7ShLUjPGA7TtUTvI1oiKi3SR4oBR0hQhQR80l4WAe5RrXBwWMA8w==", + "dev": true, + "engines": { + "node": ">=6" + }, + "peerDependencies": { + "jest-resolve": "*" + }, + "peerDependenciesMeta": { + "jest-resolve": { + "optional": true + } + } + }, + "node_modules/jest-regex-util": { + "version": "29.6.3", + "resolved": "https://registry.npmjs.org/jest-regex-util/-/jest-regex-util-29.6.3.tgz", + "integrity": "sha512-KJJBsRCyyLNWCNBOvZyRDnAIfUiRJ8v+hOBQYGn8gDyF3UegwiP4gwRR3/SDa42g1YbVycTidUF3rKjyLFDWbg==", + "dev": true, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve/-/jest-resolve-29.7.0.tgz", + "integrity": "sha512-IOVhZSrg+UvVAshDSDtHyFCCBUl/Q3AAJv8iZ6ZjnZ74xzvwuzLXid9IIIPgTnY62SJjfuupMKZsZQRsCvxEgA==", + "dev": true, + "dependencies": { + "chalk": "^4.0.0", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-pnp-resolver": "^1.2.2", + "jest-util": "^29.7.0", + "jest-validate": "^29.7.0", + "resolve": "^1.20.0", + "resolve.exports": "^2.0.0", + "slash": "^3.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-resolve-dependencies": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-resolve-dependencies/-/jest-resolve-dependencies-29.7.0.tgz", + "integrity": "sha512-un0zD/6qxJ+S0et7WxeI3H5XSe9lTBBR7bOHCHXkKR6luG5mwDDlIzVQ0V5cZCuoTgEdcdwzTghYkTWfubi+nA==", + "dev": true, + "dependencies": { + "jest-regex-util": "^29.6.3", + "jest-snapshot": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runner": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runner/-/jest-runner-29.7.0.tgz", + "integrity": "sha512-fsc4N6cPCAahybGBfTRcq5wFR6fpLznMg47sY5aDpsoejOcVYFb07AHuSnR0liMcPTgBsA3ZJL6kFOjPdoNipQ==", + "dev": true, + "dependencies": { + "@jest/console": "^29.7.0", + "@jest/environment": "^29.7.0", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "graceful-fs": "^4.2.9", + "jest-docblock": "^29.7.0", + "jest-environment-node": "^29.7.0", + "jest-haste-map": "^29.7.0", + "jest-leak-detector": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-resolve": "^29.7.0", + "jest-runtime": "^29.7.0", + "jest-util": "^29.7.0", + "jest-watcher": "^29.7.0", + "jest-worker": "^29.7.0", + "p-limit": "^3.1.0", + "source-map-support": "0.5.13" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-runtime": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-runtime/-/jest-runtime-29.7.0.tgz", + "integrity": "sha512-gUnLjgwdGqW7B4LvOIkbKs9WGbn+QLqRQQ9juC6HndeDiezIwhDP+mhMwHWCEcfQ5RUXa6OPnFF8BJh5xegwwQ==", + "dev": true, + "dependencies": { + "@jest/environment": "^29.7.0", + "@jest/fake-timers": "^29.7.0", + "@jest/globals": "^29.7.0", + "@jest/source-map": "^29.6.3", + "@jest/test-result": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "cjs-module-lexer": "^1.0.0", + "collect-v8-coverage": "^1.0.0", + "glob": "^7.1.3", + "graceful-fs": "^4.2.9", + "jest-haste-map": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-mock": "^29.7.0", + "jest-regex-util": "^29.6.3", + "jest-resolve": "^29.7.0", + "jest-snapshot": "^29.7.0", + "jest-util": "^29.7.0", + "slash": "^3.0.0", + "strip-bom": "^4.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-snapshot": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-snapshot/-/jest-snapshot-29.7.0.tgz", + "integrity": "sha512-Rm0BMWtxBcioHr1/OX5YCP8Uov4riHvKPknOGs804Zg9JGZgmIBkbtlxJC/7Z4msKYVbIJtfU+tKb8xlYNfdkw==", + "dev": true, + "dependencies": { + "@babel/core": "^7.11.6", + "@babel/generator": "^7.7.2", + "@babel/plugin-syntax-jsx": "^7.7.2", + "@babel/plugin-syntax-typescript": "^7.7.2", + "@babel/types": "^7.3.3", + "@jest/expect-utils": "^29.7.0", + "@jest/transform": "^29.7.0", + "@jest/types": "^29.6.3", + "babel-preset-current-node-syntax": "^1.0.0", + "chalk": "^4.0.0", + "expect": "^29.7.0", + "graceful-fs": "^4.2.9", + "jest-diff": "^29.7.0", + "jest-get-type": "^29.6.3", + "jest-matcher-utils": "^29.7.0", + "jest-message-util": "^29.7.0", + "jest-util": "^29.7.0", + "natural-compare": "^1.4.0", + "pretty-format": "^29.7.0", + "semver": "^7.5.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-util": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-util/-/jest-util-29.7.0.tgz", + "integrity": "sha512-z6EbKajIpqGKU56y5KBUgy1dt1ihhQJgWzUlZHArA/+X2ad7Cb5iF+AK1EWVL/Bo7Rz9uurpqw6SiBCefUbCGA==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "@types/node": "*", + "chalk": "^4.0.0", + "ci-info": "^3.2.0", + "graceful-fs": "^4.2.9", + "picomatch": "^2.2.3" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-validate/-/jest-validate-29.7.0.tgz", + "integrity": "sha512-ZB7wHqaRGVw/9hST/OuFUReG7M8vKeq0/J2egIGLdvjHCmYqGARhzXmtgi+gVeZ5uXFF219aOc3Ls2yLg27tkw==", + "dev": true, + "dependencies": { + "@jest/types": "^29.6.3", + "camelcase": "^6.2.0", + "chalk": "^4.0.0", + "jest-get-type": "^29.6.3", + "leven": "^3.1.0", + "pretty-format": "^29.7.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-validate/node_modules/camelcase": { + "version": "6.3.0", + "resolved": "https://registry.npmjs.org/camelcase/-/camelcase-6.3.0.tgz", + "integrity": "sha512-Gmy6FhYlCY7uOElZUSbxo2UCDH8owEk996gkbrpsgGtrJLM3J7jGxl9Ic7Qwwj4ivOE5AWZWRMecDdF7hqGjFA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/jest-watcher": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-watcher/-/jest-watcher-29.7.0.tgz", + "integrity": "sha512-49Fg7WXkU3Vl2h6LbLtMQ/HyB6rXSIX7SqvBLQmssRBGN9I0PNvPmAmCWSOY6SOvrjhI/F7/bGAv9RtnsPA03g==", + "dev": true, + "dependencies": { + "@jest/test-result": "^29.7.0", + "@jest/types": "^29.6.3", + "@types/node": "*", + "ansi-escapes": "^4.2.1", + "chalk": "^4.0.0", + "emittery": "^0.13.1", + "jest-util": "^29.7.0", + "string-length": "^4.0.1" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/jest-worker/-/jest-worker-29.7.0.tgz", + "integrity": "sha512-eIz2msL/EzL9UFTFFx7jBTkeZfku0yUAyZZZmJ93H2TYEiroIx2PQjEXcwYtYl8zXCxb+PAmA2hLIt/6ZEkPHw==", + "dev": true, + "dependencies": { + "@types/node": "*", + "jest-util": "^29.7.0", + "merge-stream": "^2.0.0", + "supports-color": "^8.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/jest-worker/node_modules/supports-color": { + "version": "8.1.1", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-8.1.1.tgz", + "integrity": "sha512-MpUEN2OodtUzxvKQl72cUF7RQ5EiHsGvSsVG0ia9c5RbWGL2CI4C7EpPS8UTBIplnlzZiNuV56w+FuNxy3ty2Q==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/supports-color?sponsor=1" + } + }, + "node_modules/js-tokens": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/js-tokens/-/js-tokens-4.0.0.tgz", + "integrity": "sha512-RdJUflcE3cUzKiMqQgsCu06FPu9UdIJO0beYbPhHN4k6apgJtifcoCtT9bcxOpYBtpD2kCM6Sbzg4CausW/PKQ==", + "dev": true + }, + "node_modules/js-yaml": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/js-yaml/-/js-yaml-4.1.0.tgz", + "integrity": "sha512-wpxZs9NoxZaJESJGIZTyDEaYpl0FKSA+FB9aJiyemKhMwkxQg63h4T1KJgUGHpTqPDNRcmmYLugrRjJlBtWvRA==", + "dev": true, + "dependencies": { + "argparse": "^2.0.1" + }, + "bin": { + "js-yaml": "bin/js-yaml.js" + } + }, + "node_modules/jsesc": { + "version": "2.5.2", + "resolved": "https://registry.npmjs.org/jsesc/-/jsesc-2.5.2.tgz", + "integrity": "sha512-OYu7XEzjkCQ3C5Ps3QIZsQfNpqoJyZZA99wd9aWd05NCtC5pWOkShK2mkL6HXQR6/Cy2lbNdPlZBpuQHXE63gA==", + "dev": true, + "bin": { + "jsesc": "bin/jsesc" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/json-buffer": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/json-buffer/-/json-buffer-3.0.1.tgz", + "integrity": "sha512-4bV5BfR2mqfQTJm+V5tPPdf+ZpuhiIvTuAB5g8kcrXOZpTT/QwwVRWBywX1ozr6lEuPdbHxwaJlm9G6mI2sfSQ==", + "dev": true + }, + "node_modules/json-parse-even-better-errors": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/json-parse-even-better-errors/-/json-parse-even-better-errors-2.3.1.tgz", + "integrity": "sha512-xyFwyhro/JEof6Ghe2iz2NcXoj2sloNsWr/XsERDK/oiPCfaNhl5ONfp+jQdAZRQQ0IJWNzH9zIZF7li91kh2w==", + "dev": true + }, + "node_modules/json-schema-traverse": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/json-schema-traverse/-/json-schema-traverse-0.4.1.tgz", + "integrity": "sha512-xbbCH5dCYU5T8LcEhhuh7HJ88HXuW3qsI3Y0zOZFKfZEHcpWiHU/Jxzk629Brsab/mMiHQti9wMP+845RPe3Vg==", + "dev": true + }, + "node_modules/json-stable-stringify-without-jsonify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/json-stable-stringify-without-jsonify/-/json-stable-stringify-without-jsonify-1.0.1.tgz", + "integrity": "sha512-Bdboy+l7tA3OGW6FjyFHWkP5LuByj1Tk33Ljyq0axyzdk9//JSi2u3fP1QSmd1KNwq6VOKYGlAu87CisVir6Pw==", + "dev": true + }, + "node_modules/json-stringify-pretty-compact": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/json-stringify-pretty-compact/-/json-stringify-pretty-compact-4.0.0.tgz", + "integrity": "sha512-3CNZ2DnrpByG9Nqj6Xo8vqbjT4F6N+tb4Gb28ESAZjYZ5yqvmc56J+/kuIwkaAMOyblTQhUW7PxMkUb8Q36N3Q==" + }, + "node_modules/json5": { + "version": "2.2.3", + "resolved": "https://registry.npmjs.org/json5/-/json5-2.2.3.tgz", + "integrity": "sha512-XmOWe7eyHYH14cLdVPoyg+GOH3rYX++KpzrylJwSW98t3Nk+U8XOl8FWKOgwtzdb8lXGf6zYwDUzeHMWfxasyg==", + "dev": true, + "bin": { + "json5": "lib/cli.js" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/jsts": { + "version": "2.7.1", + "resolved": "https://registry.npmjs.org/jsts/-/jsts-2.7.1.tgz", + "integrity": "sha512-x2wSZHEBK20CY+Wy+BPE7MrFQHW6sIsdaGUMEqmGAio+3gFzQaBYPwLRonUfQf9Ak8pBieqj9tUofX1+WtAEIg==", + "engines": { + "node": ">= 12" + } + }, + "node_modules/jsx-ast-utils": { + "version": "3.3.5", + "resolved": "https://registry.npmjs.org/jsx-ast-utils/-/jsx-ast-utils-3.3.5.tgz", + "integrity": "sha512-ZZow9HBI5O6EPgSJLUb8n2NKgmVWTwCvHGwFuJlMjvLFqlGG6pjirPhtdsseaLZjSibD8eegzmYpUZwoIlj2cQ==", + "dev": true, + "dependencies": { + "array-includes": "^3.1.6", + "array.prototype.flat": "^1.3.1", + "object.assign": "^4.1.4", + "object.values": "^1.1.6" + }, + "engines": { + "node": ">=4.0" + } + }, + "node_modules/kdbush": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/kdbush/-/kdbush-4.0.2.tgz", + "integrity": "sha512-WbCVYJ27Sz8zi9Q7Q0xHC+05iwkm3Znipc2XTlrnJbsHMYktW4hPhXUE8Ys1engBrvffoSCqbil1JQAa7clRpA==" + }, + "node_modules/keyv": { + "version": "4.5.4", + "resolved": "https://registry.npmjs.org/keyv/-/keyv-4.5.4.tgz", + "integrity": "sha512-oxVHkHR/EJf2CNXnWxRLW6mg7JyCCUcG0DtEGmL2ctUo1PNTin1PUil+r/+4r5MpVgC/fn1kjsx7mjSujKqIpw==", + "dev": true, + "dependencies": { + "json-buffer": "3.0.1" + } + }, + "node_modules/kind-of": { + "version": "6.0.3", + "resolved": "https://registry.npmjs.org/kind-of/-/kind-of-6.0.3.tgz", + "integrity": "sha512-dcS1ul+9tmeD95T+x28/ehLgd9mENa3LsvDTtzm3vyBEO7RPptvAD+t44WVXaUjTBRcrpFeFlC8WCruUR456hw==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/kleur": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/kleur/-/kleur-3.0.3.tgz", + "integrity": "sha512-eTIzlVOSUR+JxdDFepEYcBMtZ9Qqdef+rnzWdRZuMbOywu5tO2w2N7rqjoANZ5k9vywhL6Br1VRjUIgTQx4E8w==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/language-subtag-registry": { + "version": "0.3.23", + "resolved": "https://registry.npmjs.org/language-subtag-registry/-/language-subtag-registry-0.3.23.tgz", + "integrity": "sha512-0K65Lea881pHotoGEa5gDlMxt3pctLi2RplBb7Ezh4rRdLEOtgi7n4EwK9lamnUCkKBqaeKRVebTq6BAxSkpXQ==", + "dev": true + }, + "node_modules/language-tags": { + "version": "1.0.9", + "resolved": "https://registry.npmjs.org/language-tags/-/language-tags-1.0.9.tgz", + "integrity": "sha512-MbjN408fEndfiQXbFQ1vnd+1NoLDsnQW41410oQBXiyXDMYH5z505juWa4KUE1LqxRC7DgOgZDbKLxHIwm27hA==", + "dev": true, + "dependencies": { + "language-subtag-registry": "^0.3.20" + }, + "engines": { + "node": ">=0.10" + } + }, + "node_modules/leven": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/leven/-/leven-3.1.0.tgz", + "integrity": "sha512-qsda+H8jTaUaN/x5vzW2rzc+8Rw4TAQ/4KjB46IwK5VH+IlVeeeje/EoZRpiXvIqjFgK84QffqPztGI3VBLG1A==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/levn": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/levn/-/levn-0.4.1.tgz", + "integrity": "sha512-+bT2uH4E5LGE7h/n3evcS/sQlJXCpIp6ym8OWJ5eV6+67Dsql/LaaT7qJBAt2rzfoa/5QBGBhxDix1dMt2kQKQ==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1", + "type-check": "~0.4.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/lines-and-columns": { + "version": "1.2.4", + "resolved": "https://registry.npmjs.org/lines-and-columns/-/lines-and-columns-1.2.4.tgz", + "integrity": "sha512-7ylylesZQ/PV29jhEDl3Ufjo6ZX7gCqJr5F7PKrqc93v7fzSymt1BpwEU8nAUXs8qzzvqhbjhK5QZg6Mt/HkBg==", + "dev": true + }, + "node_modules/locate-path": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-6.0.0.tgz", + "integrity": "sha512-iPZK6eYjbxRu3uB4/WZ3EsEIMJFMqAoopl3R+zuq0UjcAm/MO6KCweDgPfP3elTztoKP3KtnVHxTn2NHBSDVUw==", + "dev": true, + "dependencies": { + "p-locate": "^5.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/lodash": { + "version": "4.17.21", + "resolved": "https://registry.npmjs.org/lodash/-/lodash-4.17.21.tgz", + "integrity": "sha512-v2kDEe57lecTulaDIuNTPy3Ry4gLGJ6Z1O3vE1krgXZNrsQ+LFTGHVxVjcXPs17LhbZVGedAJv8XZ1tvj5FvSg==" + }, + "node_modules/lodash.merge": { + "version": "4.6.2", + "resolved": "https://registry.npmjs.org/lodash.merge/-/lodash.merge-4.6.2.tgz", + "integrity": "sha512-0KpjqXRVvrYyCsX1swR/XTK0va6VQkQM6MNo7PqW77ByjAhoARA8EfrP1N4+KlKj8YS0ZUCtRT/YUuhyYDujIQ==", + "dev": true + }, + "node_modules/loose-envify": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/loose-envify/-/loose-envify-1.4.0.tgz", + "integrity": "sha512-lyuxPGr/Wfhrlem2CL/UcnUc1zcqKAImBDzukY7Y5F/yQiNdko6+fRLevlw1HgMySw7f611UIY408EtxRSoK3Q==", + "dev": true, + "dependencies": { + "js-tokens": "^3.0.0 || ^4.0.0" + }, + "bin": { + "loose-envify": "cli.js" + } + }, + "node_modules/lru-cache": { + "version": "5.1.1", + "resolved": "https://registry.npmjs.org/lru-cache/-/lru-cache-5.1.1.tgz", + "integrity": "sha512-KpNARQA3Iwv+jTA0utUVVbrh+Jlrr1Fv0e56GGzAFOXN7dk/FviaDW8LHmK52DlcH4WP2n6gI8vN1aesBFgo9w==", + "dev": true, + "dependencies": { + "yallist": "^3.0.2" + } + }, + "node_modules/magic-string": { + "version": "0.30.11", + "resolved": "https://registry.npmjs.org/magic-string/-/magic-string-0.30.11.tgz", + "integrity": "sha512-+Wri9p0QHMy+545hKww7YAu5NyzF8iomPL/RQazugQ9+Ez4Ic3mERMd8ZTX5rfK944j+560ZJi8iAwgak1Ac7A==", + "dependencies": { + "@jridgewell/sourcemap-codec": "^1.5.0" + } + }, + "node_modules/make-dir": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/make-dir/-/make-dir-4.0.0.tgz", + "integrity": "sha512-hXdUTZYIVOt1Ex//jAQi+wTZZpUpwBj/0QsOzqegb3rGMMeJiSEu5xLHnYfBrRV4RH2+OCSOO95Is/7x1WJ4bw==", + "dev": true, + "dependencies": { + "semver": "^7.5.3" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/makeerror": { + "version": "1.0.12", + "resolved": "https://registry.npmjs.org/makeerror/-/makeerror-1.0.12.tgz", + "integrity": "sha512-JmqCvUhmt43madlpFzG4BQzG2Z3m6tvQDNKdClZnO3VbIudJYmxsT0FNJMeiB2+JTSlTQTSbU8QdesVmwJcmLg==", + "dev": true, + "dependencies": { + "tmpl": "1.0.5" + } + }, + "node_modules/mapbox-gl": { + "version": "3.9.0", + "resolved": "https://registry.npmjs.org/mapbox-gl/-/mapbox-gl-3.9.0.tgz", + "integrity": "sha512-QKAxLHcbdoqobXuhu2PP6HJDSy0/GhfZuO5O8BrmwfR0ihZbA5ihYD/u0wGqu2QTDWi/DbgCWJIlV2mXh2Sekg==", + "dev": true, + "dependencies": { + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/mapbox-gl-supported": "^3.0.0", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "@types/geojson": "^7946.0.15", + "@types/geojson-vt": "^3.2.5", + "@types/mapbox__point-geometry": "^0.1.4", + "@types/mapbox__vector-tile": "^1.3.4", + "@types/pbf": "^3.0.5", + "@types/supercluster": "^7.1.3", + "cheap-ruler": "^4.0.0", + "csscolorparser": "~1.0.3", + "earcut": "^3.0.0", + "geojson-vt": "^4.0.2", + "gl-matrix": "^3.4.3", + "grid-index": "^1.1.0", + "kdbush": "^4.0.2", + "murmurhash-js": "^1.0.0", + "pbf": "^3.2.1", + "potpack": "^2.0.0", + "quickselect": "^3.0.0", + "serialize-to-js": "^3.1.2", + "supercluster": "^8.0.1", + "tinyqueue": "^3.0.0", + "vt-pbf": "^3.1.3" + } + }, + "node_modules/maplibre-gl": { + "version": "4.7.0", + "resolved": "https://registry.npmjs.org/maplibre-gl/-/maplibre-gl-4.7.0.tgz", + "integrity": "sha512-hkt7je7NxiMQE8EpCxLWP8t6tkK6SkrMe0hIBjYd4Ar/Q7BOCILxthGmGnU993Mwmkvs2mGiXnVUSOK12DeCzg==", + "dependencies": { + "@mapbox/geojson-rewind": "^0.5.2", + "@mapbox/jsonlint-lines-primitives": "^2.0.2", + "@mapbox/point-geometry": "^0.1.0", + "@mapbox/tiny-sdf": "^2.0.6", + "@mapbox/unitbezier": "^0.0.1", + "@mapbox/vector-tile": "^1.3.1", + "@mapbox/whoots-js": "^3.1.0", + "@maplibre/maplibre-gl-style-spec": "^20.3.1", + "@types/geojson": "^7946.0.14", + "@types/geojson-vt": "3.2.5", + "@types/mapbox__point-geometry": "^0.1.4", + "@types/mapbox__vector-tile": "^1.3.4", + "@types/pbf": "^3.0.5", + "@types/supercluster": "^7.1.3", + "earcut": "^3.0.0", + "geojson-vt": "^4.0.2", + "gl-matrix": "^3.4.3", + "global-prefix": "^4.0.0", + "kdbush": "^4.0.2", + "murmurhash-js": "^1.0.0", + "pbf": "^3.3.0", + "potpack": "^2.0.0", + "quickselect": "^3.0.0", + "supercluster": "^8.0.1", + "tinyqueue": "^3.0.0", + "vt-pbf": "^3.1.3" + }, + "engines": { + "node": ">=16.14.0", + "npm": ">=8.1.0" + }, + "funding": { + "url": "https://github.com/maplibre/maplibre-gl-js?sponsor=1" + } + }, + "node_modules/marchingsquares": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/marchingsquares/-/marchingsquares-1.3.3.tgz", + "integrity": "sha512-gz6nNQoVK7Lkh2pZulrT4qd4347S/toG9RXH2pyzhLgkL5mLkBoqgv4EvAGXcV0ikDW72n/OQb3Xe8bGagQZCg==" + }, + "node_modules/merge-stream": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/merge-stream/-/merge-stream-2.0.0.tgz", + "integrity": "sha512-abv/qOcuPfk3URPfDzmZU1LKmuw8kT+0nIHvKrKgFrwifol/doWcdA4ZqsWQ8ENrFKkd67Mfpo/LovbIUsbt3w==", + "dev": true + }, + "node_modules/merge2": { + "version": "1.4.1", + "resolved": "https://registry.npmjs.org/merge2/-/merge2-1.4.1.tgz", + "integrity": "sha512-8q7VEgMJW4J8tcfVPy8g09NcQwZdbwFEqhe/WZkoIzjn/3TGDwtOCYtXGxA3O8tPzpczCCDgv+P2P5y00ZJOOg==", + "dev": true, + "engines": { + "node": ">= 8" + } + }, + "node_modules/micromatch": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/micromatch/-/micromatch-4.0.8.tgz", + "integrity": "sha512-PXwfBhYu0hBCPw8Dn0E+WDYb7af3dSLVWKi3HGv84IdF4TyFoC0ysxFd0Goxw7nSv4T/PzEJQxsYsEiFCKo2BA==", + "dev": true, + "dependencies": { + "braces": "^3.0.3", + "picomatch": "^2.3.1" + }, + "engines": { + "node": ">=8.6" + } + }, + "node_modules/mime-db": { + "version": "1.52.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.52.0.tgz", + "integrity": "sha512-sPU4uV7dYlvtWJxwwxHD0PuihVNiE7TyAbQ5SWxDCB9mUYvOgroQOwYQQOKPJ8CIbE+1ETVlOoK1UC2nU3gYvg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.35", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.35.tgz", + "integrity": "sha512-ZDY+bPm5zTTF+YpCrAU9nK0UgICYPT0QtT1NZWFv4s++TNkcgVaT0g6+4R2uI4MjQjzysHB1zxuWL50hzaeXiw==", + "dependencies": { + "mime-db": "1.52.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mimic-fn": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/mimic-fn/-/mimic-fn-2.1.0.tgz", + "integrity": "sha512-OqbOk5oEQeAZ8WXWydlu9HJjz9WVdEIvamMCcXmuqUYjTknH/sqsWvhQ3vgwKFRR1HpjvNBKQ37nbJgYzGqGcg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/minimatch": { + "version": "9.0.3", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-9.0.3.tgz", + "integrity": "sha512-RHiac9mvaRw0x3AYRgDC1CxAP7HTcNrrECeA8YYJeWnpo+2Q5CegtZjaotWTWxDG3UeGA1coE05iH1mPjT/2mg==", + "dev": true, + "dependencies": { + "brace-expansion": "^2.0.1" + }, + "engines": { + "node": ">=16 || 14 >=14.17" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/minimist": { + "version": "1.2.8", + "resolved": "https://registry.npmjs.org/minimist/-/minimist-1.2.8.tgz", + "integrity": "sha512-2yyAR8qBkN3YuheJanUpWC5U3bb5osDywNB8RzDVlDwDHbocAJveqqj1u8+SVD7jkWT4yvsHCpWqqWqAxb0zCA==", + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==", + "devOptional": true + }, + "node_modules/muggle-string": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/muggle-string/-/muggle-string-0.4.1.tgz", + "integrity": "sha512-VNTrAak/KhO2i8dqqnqnAHOa3cYBwXEZe9h+D5h/1ZqFSTEFHdM65lR7RoIqq3tBBYavsOXV84NoHXZ0AkPyqQ==", + "dev": true + }, + "node_modules/murmurhash-js": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/murmurhash-js/-/murmurhash-js-1.0.0.tgz", + "integrity": "sha512-TvmkNhkv8yct0SVBSy+o8wYzXjE4Zz3PCesbfs8HiCXXdcTuocApFv11UWlNFWKYsP2okqrhb7JNlSm9InBhIw==" + }, + "node_modules/nanoid": { + "version": "3.3.8", + "resolved": "https://registry.npmjs.org/nanoid/-/nanoid-3.3.8.tgz", + "integrity": "sha512-WNLf5Sd8oZxOm+TzppcYk8gVOgP+l58xNy58D0nbUnOxOWRWvlcCV4kUF7ltmI6PsrLl/BgKEyS4mqsGChFN0w==", + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "bin": { + "nanoid": "bin/nanoid.cjs" + }, + "engines": { + "node": "^10 || ^12 || ^13.7 || ^14 || >=15.0.1" + } + }, + "node_modules/natural-compare": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/natural-compare/-/natural-compare-1.4.0.tgz", + "integrity": "sha512-OWND8ei3VtNC9h7V60qff3SVobHr996CTwgxubgyQYEpg290h9J0buyECNNJexkFm5sOajh5G116RYA1c8ZMSw==", + "dev": true + }, + "node_modules/node-int64": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/node-int64/-/node-int64-0.4.0.tgz", + "integrity": "sha512-O5lz91xSOeoXP6DulyHfllpq+Eg00MWitZIbtPfoSEvqIHdl5gfcY6hYzDWnj0qD5tz52PI08u9qUvSVeUBeHw==", + "dev": true + }, + "node_modules/node-releases": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/node-releases/-/node-releases-2.0.18.tgz", + "integrity": "sha512-d9VeXT4SJ7ZeOqGX6R5EM022wpL+eWPooLI+5UpWn2jCT1aosUQEhQP214x33Wkwx3JQMvIm+tIoVOdodFS40g==", + "dev": true + }, + "node_modules/normalize-path": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/normalize-path/-/normalize-path-3.0.0.tgz", + "integrity": "sha512-6eZs5Ls3WtCisHWp9S2GUy8dqkpGi4BVSz3GaqiE6ezub0512ESztXUwUB6C6IKbQkY2Pnb/mD4WYojCRwcwLA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/npm-run-path": { + "version": "4.0.1", + "resolved": "https://registry.npmjs.org/npm-run-path/-/npm-run-path-4.0.1.tgz", + "integrity": "sha512-S48WzZW777zhNIrn7gxOlISNAqi9ZC/uQFnRdbeIHhZhCA6UqpkOT8T1G7BvfdgP4Er8gF4sUbaS0i7QvIfCWw==", + "dev": true, + "dependencies": { + "path-key": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/nth-check": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/nth-check/-/nth-check-2.1.1.tgz", + "integrity": "sha512-lqjrjmaOoAnWfMmBPL+XNnynZh2+swxiX3WUE0s4yEHI6m+AwrK2UZOimIRl3X/4QctVqS8AiZjFqyOGrMXb/w==", + "dev": true, + "dependencies": { + "boolbase": "^1.0.0" + }, + "funding": { + "url": "https://github.com/fb55/nth-check?sponsor=1" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha512-rJgTQnkUnH1sFw8yT6VSU3zD3sWmu6sZhIseY8VX+GRu3P6F7Fu+JNDoXfklElbLJSnc3FUQHVe4cU5hj+BcUg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/object-inspect": { + "version": "1.13.2", + "resolved": "https://registry.npmjs.org/object-inspect/-/object-inspect-1.13.2.tgz", + "integrity": "sha512-IRZSRuzJiynemAXPYtPe5BoI/RESNYR7TYm50MC5Mqbd3Jmw5y790sErYw3V6SryFJD64b74qQQs9wn5Bg/k3g==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-is": { + "version": "1.1.6", + "resolved": "https://registry.npmjs.org/object-is/-/object-is-1.1.6.tgz", + "integrity": "sha512-F8cZ+KfGlSGi09lJT7/Nd6KJZ9ygtvYC0/UYYLI9nmQKLMnydpB9yvbv9K1uSkEu7FU9vYPmVwLg328tX+ot3Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object-keys": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/object-keys/-/object-keys-1.1.1.tgz", + "integrity": "sha512-NuAESUOUMrlIXOfHKzD6bpPu3tYt3xvjNdRIQ+FeT0lNb4K8WR70CaDxhuNguS2XG+GjkyMwOzsN5ZktImfhLA==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.assign": { + "version": "4.1.5", + "resolved": "https://registry.npmjs.org/object.assign/-/object.assign-4.1.5.tgz", + "integrity": "sha512-byy+U7gp+FVwmyzKPYhW2h5l3crpmGsxl7X2s8y43IgxvG4g3QZ6CffDtsNQy1WsmZpQbO+ybo0AlW7TY6DcBQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.5", + "define-properties": "^1.2.1", + "has-symbols": "^1.0.3", + "object-keys": "^1.1.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.entries": { + "version": "1.1.8", + "resolved": "https://registry.npmjs.org/object.entries/-/object.entries-1.1.8.tgz", + "integrity": "sha512-cmopxi8VwRIAw/fkijJohSfpef5PdN0pMQJN6VC/ZKvn0LIknWD8KtgY6KlQdEc4tIjcQ3HxSMmnvtzIscdaYQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.fromentries": { + "version": "2.0.8", + "resolved": "https://registry.npmjs.org/object.fromentries/-/object.fromentries-2.0.8.tgz", + "integrity": "sha512-k6E21FzySsSK5a21KRADBd/NGneRegFO5pLHfdQLpRDETUNJueLXs3WCzyQ3tFRDYgbq3KHGXfTbi2bs8WQ6rQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/object.groupby": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/object.groupby/-/object.groupby-1.0.3.tgz", + "integrity": "sha512-+Lhy3TQTuzXI5hevh8sBGqbmurHbbIjAi0Z4S63nthVLmLxfbj4T54a4CfZrXIrt9iP4mVAPYMo/v99taj3wjQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/object.values": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/object.values/-/object.values-1.2.0.tgz", + "integrity": "sha512-yBYjY9QX2hnRmZHAjG/f13MzmBzxzYgQhFrke06TTyKY5zSTEqkOeukBzIdVA3j3ulu8Qa3MbVFShV7T2RmGtQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/once": { + "version": "1.4.0", + "resolved": "https://registry.npmjs.org/once/-/once-1.4.0.tgz", + "integrity": "sha512-lNaJgI+2Q5URQBkccEKHTQOPaXdUxnZZElQTZY0MFUAuaEqe1E+Nyvgdz/aIyNi6Z9MzO5dv1H8n58/GELp3+w==", + "dev": true, + "dependencies": { + "wrappy": "1" + } + }, + "node_modules/onetime": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/onetime/-/onetime-5.1.2.tgz", + "integrity": "sha512-kbpaSSGJTWdAY5KPVeMOKXSrPtr8C8C7wodJbcsd51jRnmD+GZu8Y0VoU6Dm5Z4vWr0Ig/1NKuWRKf7j5aaYSg==", + "dev": true, + "dependencies": { + "mimic-fn": "^2.1.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/opener": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/opener/-/opener-1.5.2.tgz", + "integrity": "sha512-ur5UIdyw5Y7yEj9wLzhqXiy6GZ3Mwx0yGI+5sMn2r0N0v3cKJvUmFH5yPP+WXh9e0xfyzyJX95D8l088DNFj7A==", + "bin": { + "opener": "bin/opener-bin.js" + } + }, + "node_modules/optionator": { + "version": "0.9.4", + "resolved": "https://registry.npmjs.org/optionator/-/optionator-0.9.4.tgz", + "integrity": "sha512-6IpQ7mKUxRcZNLIObR0hz7lxsapSSIYNZJwXPGeF0mTVqGKFIXj1DQcMoT22S3ROcLyY/rz0PWaWZ9ayWmad9g==", + "dev": true, + "dependencies": { + "deep-is": "^0.1.3", + "fast-levenshtein": "^2.0.6", + "levn": "^0.4.1", + "prelude-ls": "^1.2.1", + "type-check": "^0.4.0", + "word-wrap": "^1.2.5" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/p-limit": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-3.1.0.tgz", + "integrity": "sha512-TYOanM3wGwNGsZN2cVTYPArw454xnXj5qmWF1bEoAc4+cU/ol7GVh7odevjp1FNHduHc3KZMcFduxU5Xc6uJRQ==", + "dev": true, + "dependencies": { + "yocto-queue": "^0.1.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-locate": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-5.0.0.tgz", + "integrity": "sha512-LaNjtRWUBY++zB5nE/NwcaoMylSPk+S+ZHNB1TzdbMJMny6dynpAGt7X/tl/QYq3TIeE6nxHppbo2LGymrG5Pw==", + "dev": true, + "dependencies": { + "p-limit": "^3.0.2" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/p-try": { + "version": "2.2.0", + "resolved": "https://registry.npmjs.org/p-try/-/p-try-2.2.0.tgz", + "integrity": "sha512-R4nPAVTAU0B9D35/Gk3uJf/7XYbQcyohSKdvAxIRSNghFl4e71hVoGnBNQz9cWaXxO2I10KTC+3jMdvvoKw6dQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/parent-module": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/parent-module/-/parent-module-1.0.1.tgz", + "integrity": "sha512-GQ2EWRpQV8/o+Aw8YqtfZZPfNRWZYkbidE9k5rpl/hC3vtHHBfGm2Ifi6qWV+coDGkrUKZAxE3Lot5kcsRlh+g==", + "dev": true, + "dependencies": { + "callsites": "^3.0.0" + }, + "engines": { + "node": ">=6" + } + }, + "node_modules/parse-json": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/parse-json/-/parse-json-5.2.0.tgz", + "integrity": "sha512-ayCKvm/phCGxOkYRSCM82iDwct8/EonSEgCSxWxD7ve6jHggsFl4fZVQBPRNgQoKiuV/odhFrGzQXZwbifC8Rg==", + "dev": true, + "dependencies": { + "@babel/code-frame": "^7.0.0", + "error-ex": "^1.3.1", + "json-parse-even-better-errors": "^2.3.0", + "lines-and-columns": "^1.1.6" + }, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/path-browserify": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-browserify/-/path-browserify-1.0.1.tgz", + "integrity": "sha512-b7uo2UCUOYZcnF/3ID0lulOJi/bafxa1xPe7ZPsammBSpjSWQkjNxlt635YGS2MiR9GjvuXCtz2emr3jbsz98g==", + "dev": true + }, + "node_modules/path-exists": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-exists/-/path-exists-4.0.0.tgz", + "integrity": "sha512-ak9Qy5Q7jYb2Wwcey5Fpvg2KoAc/ZIhLSLOSBmRmygPsGwkVVt0fZa0qrtMz+m6tJTAHfZQ8FnmB4MG4LWy7/w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-is-absolute": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/path-is-absolute/-/path-is-absolute-1.0.1.tgz", + "integrity": "sha512-AVbw3UJ2e9bq64vSaS9Am0fje1Pa8pbGqTTsmXfaIiMpnr5DlDhfJOuLj9Sf95ZPVDAUerDfEk88MPmPe7UCQg==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/path-key": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/path-key/-/path-key-3.1.1.tgz", + "integrity": "sha512-ojmeN0qd+y0jszEtoY48r0Peq5dwMEkIlCOu6Q5f41lfkswXuKtYrhgoTpLnyIcHm24Uhqx+5Tqm2InSwLhE6Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/path-parse": { + "version": "1.0.7", + "resolved": "https://registry.npmjs.org/path-parse/-/path-parse-1.0.7.tgz", + "integrity": "sha512-LDJzPVEEEPR+y48z93A0Ed0yXb8pAByGWo/k5YYdYgpY2/2EsOsksJrq7lOHxryrVOn1ejG6oAp8ahvOIQD8sw==", + "dev": true + }, + "node_modules/path-type": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/path-type/-/path-type-4.0.0.tgz", + "integrity": "sha512-gDKb8aZMDeD/tZWs9P6+q0J9Mwkdl6xMV8TjnGP3qJVJ06bdMgkbBlLU8IdfOsIsFz2BW1rNVT3XuNEl8zPAvw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/pbf": { + "version": "3.3.0", + "resolved": "https://registry.npmjs.org/pbf/-/pbf-3.3.0.tgz", + "integrity": "sha512-XDF38WCH3z5OV/OVa8GKUNtLAyneuzbCisx7QUCF8Q6Nutx0WnJrQe5O+kOtBlLfRNUws98Y58Lblp+NJG5T4Q==", + "dependencies": { + "ieee754": "^1.1.12", + "resolve-protobuf-schema": "^2.1.0" + }, + "bin": { + "pbf": "bin/pbf" + } + }, + "node_modules/picocolors": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/picocolors/-/picocolors-1.1.0.tgz", + "integrity": "sha512-TQ92mBOW0l3LeMeyLV6mzy/kWr8lkd/hp3mTg7wYK7zJhuBStmGMBG0BdeDZS/dZx1IukaX6Bk11zcln25o1Aw==" + }, + "node_modules/picomatch": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/picomatch/-/picomatch-2.3.1.tgz", + "integrity": "sha512-JU3teHTNjmE2VCGFzuY8EXzCDVwEqB2a8fsIvwaStHhAWJEeVd1o1QD80CU6+ZdEXXSLbSsuLwJjkCBWqRQUVA==", + "dev": true, + "engines": { + "node": ">=8.6" + }, + "funding": { + "url": "https://github.com/sponsors/jonschlinkert" + } + }, + "node_modules/pirates": { + "version": "4.0.6", + "resolved": "https://registry.npmjs.org/pirates/-/pirates-4.0.6.tgz", + "integrity": "sha512-saLsH7WeYYPiD25LDuLRRY/i+6HaPYr6G1OUlN39otzkSTxKnubR9RTxS3/Kk50s1g2JTgFwWQDQyplC5/SHZg==", + "dev": true, + "engines": { + "node": ">= 6" + } + }, + "node_modules/pkg-dir": { + "version": "4.2.0", + "resolved": "https://registry.npmjs.org/pkg-dir/-/pkg-dir-4.2.0.tgz", + "integrity": "sha512-HRDzbaKjC+AOWVXxAU/x54COGeIv9eb+6CkDSQoNTt4XyWoIJvuPsXizxu/Fr23EiekbtZwmh1IcIG/l/a10GQ==", + "dev": true, + "dependencies": { + "find-up": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/find-up": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/find-up/-/find-up-4.1.0.tgz", + "integrity": "sha512-PpOwAdQ/YlXQ2vj8a3h8IipDuYRi3wceVQQGYWxNINccq40Anw7BlsEXCMbt1Zt+OLA6Fq9suIpIWD0OsnISlw==", + "dev": true, + "dependencies": { + "locate-path": "^5.0.0", + "path-exists": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/locate-path": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/locate-path/-/locate-path-5.0.0.tgz", + "integrity": "sha512-t7hw9pI+WvuwNJXwk5zVHpyhIqzg2qTlklJOf0mVxGSbe3Fp2VieZcduNYjaLDoy6p9uGpQEGWG87WpMKlNq8g==", + "dev": true, + "dependencies": { + "p-locate": "^4.1.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pkg-dir/node_modules/p-limit": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/p-limit/-/p-limit-2.3.0.tgz", + "integrity": "sha512-//88mFWSJx8lxCzwdAABTJL2MyWB12+eIY7MDL2SqLmAkeKU9qxRvWuSyTjm3FUmpBEMuFfckAIqEaVGUDxb6w==", + "dev": true, + "dependencies": { + "p-try": "^2.0.0" + }, + "engines": { + "node": ">=6" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/pkg-dir/node_modules/p-locate": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/p-locate/-/p-locate-4.1.0.tgz", + "integrity": "sha512-R79ZZ/0wAxKGu3oYMlz8jy/kbhsNrS7SKZ7PxEHBgJ5+F2mtFW2fK2cOtBh1cHYkQsbzFV7I+EoRKe6Yt0oK7A==", + "dev": true, + "dependencies": { + "p-limit": "^2.2.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/pmtiles": { + "version": "3.2.1", + "resolved": "https://registry.npmjs.org/pmtiles/-/pmtiles-3.2.1.tgz", + "integrity": "sha512-3R4fBwwoli5mw7a6t1IGwOtfmcSAODq6Okz0zkXhS1zi9sz1ssjjIfslwPvcWw5TNhdjNBUg9fgfPLeqZlH6ng==", + "license": "BSD-3-Clause", + "dependencies": { + "@types/leaflet": "^1.9.8", + "fflate": "^0.8.0" + } + }, + "node_modules/point-in-polygon": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/point-in-polygon/-/point-in-polygon-1.1.0.tgz", + "integrity": "sha512-3ojrFwjnnw8Q9242TzgXuTD+eKiutbzyslcq1ydfu82Db2y+Ogbmyrkpv0Hgj31qwT3lbS9+QAAO/pIQM35XRw==" + }, + "node_modules/point-in-polygon-hao": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/point-in-polygon-hao/-/point-in-polygon-hao-1.2.3.tgz", + "integrity": "sha512-uZsWylGd8nthIYS8F7aSyM7Pot+4L/bgXheJcCNdRr4eLpsM/rMb3hIi5SqNxAVjUoDDao3QzCtdaVDzmeF9Cw==", + "dependencies": { + "robust-predicates": "^3.0.2" + } + }, + "node_modules/polygon-clipping": { + "version": "0.15.7", + "resolved": "https://registry.npmjs.org/polygon-clipping/-/polygon-clipping-0.15.7.tgz", + "integrity": "sha512-nhfdr83ECBg6xtqOAJab1tbksbBAOMUltN60bU+llHVOL0e5Onm1WpAXXWXVB39L8AJFssoIhEVuy/S90MmotA==", + "dependencies": { + "robust-predicates": "^3.0.2", + "splaytree": "^3.1.0" + } + }, + "node_modules/possible-typed-array-names": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/possible-typed-array-names/-/possible-typed-array-names-1.0.0.tgz", + "integrity": "sha512-d7Uw+eZoloe0EHDIYoe+bQ5WXnGMOpmiZFTuMWCwpjzzkL2nTjcKiAk4hh8TjnGye2TwWOk3UXucZ+3rbmBa8Q==", + "dev": true, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/postcss": { + "version": "8.4.47", + "resolved": "https://registry.npmjs.org/postcss/-/postcss-8.4.47.tgz", + "integrity": "sha512-56rxCq7G/XfB4EkXq9Egn5GCqugWvDFjafDOThIdMBsI15iqPqR5r15TfSr1YPYeEI19YeaXMCbY6u88Y76GLQ==", + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/postcss/" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/postcss" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "nanoid": "^3.3.7", + "picocolors": "^1.1.0", + "source-map-js": "^1.2.1" + }, + "engines": { + "node": "^10 || ^12 || >=14" + } + }, + "node_modules/postcss-selector-parser": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/postcss-selector-parser/-/postcss-selector-parser-6.1.2.tgz", + "integrity": "sha512-Q8qQfPiZ+THO/3ZrOrO0cJJKfpYCagtMUkXbnEfmgUjwXg6z/WBeOyS9APBBPCTSiDV+s4SwQGu8yFsiMRIudg==", + "dev": true, + "dependencies": { + "cssesc": "^3.0.0", + "util-deprecate": "^1.0.2" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/potpack": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/potpack/-/potpack-2.0.0.tgz", + "integrity": "sha512-Q+/tYsFU9r7xoOJ+y/ZTtdVQwTWfzjbiXBDMM/JKUux3+QPP02iUuIoeBQ+Ot6oEDlC+/PGjB/5A3K7KKb7hcw==" + }, + "node_modules/prelude-ls": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/prelude-ls/-/prelude-ls-1.2.1.tgz", + "integrity": "sha512-vkcDPrRZo1QZLbn5RLGPpg/WmIQ65qoWWhcGKf/b5eplkkarX0m9z8ppCat4mlOqUsWpyNuYgO3VRyrYHSzX5g==", + "dev": true, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/pretty-format": { + "version": "29.7.0", + "resolved": "https://registry.npmjs.org/pretty-format/-/pretty-format-29.7.0.tgz", + "integrity": "sha512-Pdlw/oPxN+aXdmM9R00JVC9WVFoCLTKJvDVLgmJ+qAffBMxsV85l/Lu7sNx4zSzPyoL2euImuEwHhOXdEgNFZQ==", + "dev": true, + "dependencies": { + "@jest/schemas": "^29.6.3", + "ansi-styles": "^5.0.0", + "react-is": "^18.0.0" + }, + "engines": { + "node": "^14.15.0 || ^16.10.0 || >=18.0.0" + } + }, + "node_modules/pretty-format/node_modules/ansi-styles": { + "version": "5.2.0", + "resolved": "https://registry.npmjs.org/ansi-styles/-/ansi-styles-5.2.0.tgz", + "integrity": "sha512-Cxwpt2SfTzTtXcfOlzGEee8O+c+MmUgGrNiBcXnuWxuFJHe6a5Hz7qwhwe5OgaSYI0IJvkLqWX1ASG+cJOkEiA==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/ansi-styles?sponsor=1" + } + }, + "node_modules/prompts": { + "version": "2.4.2", + "resolved": "https://registry.npmjs.org/prompts/-/prompts-2.4.2.tgz", + "integrity": "sha512-NxNv/kLguCA7p3jE8oL2aEBsrJWgAakBpgmgK6lpPWV+WuOmY6r2/zbAVnP+T8bQlA0nzHXSJSJW0Hq7ylaD2Q==", + "dev": true, + "dependencies": { + "kleur": "^3.0.3", + "sisteransi": "^1.0.5" + }, + "engines": { + "node": ">= 6" + } + }, + "node_modules/prop-types": { + "version": "15.8.1", + "resolved": "https://registry.npmjs.org/prop-types/-/prop-types-15.8.1.tgz", + "integrity": "sha512-oj87CgZICdulUohogVAR7AjlC0327U4el4L6eAvOqCeudMDVU0NThNaV+b9Df4dXgSP1gXMTnPdhfe/2qDH5cg==", + "dev": true, + "dependencies": { + "loose-envify": "^1.4.0", + "object-assign": "^4.1.1", + "react-is": "^16.13.1" + } + }, + "node_modules/prop-types/node_modules/react-is": { + "version": "16.13.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-16.13.1.tgz", + "integrity": "sha512-24e6ynE2H+OKt4kqsOvNd8kBpV65zoxbA4BVsEOB3ARVWQki/DHzaUoC5KuON/BiccDaCCTZBuOcfZs70kR8bQ==", + "dev": true + }, + "node_modules/protocol-buffers-schema": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/protocol-buffers-schema/-/protocol-buffers-schema-3.6.0.tgz", + "integrity": "sha512-TdDRD+/QNdrCGCE7v8340QyuXd4kIWIgapsE2+n/SaGiSSbomYl4TjHlvIoCWRpE7wFt02EpB35VVA2ImcBVqw==" + }, + "node_modules/proxy-from-env": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/proxy-from-env/-/proxy-from-env-1.1.0.tgz", + "integrity": "sha512-D+zkORCbA9f1tdWRK0RaCR3GPv50cMxcrz4X8k5LTSUD1Dkw47mKJEZQNunItRTkWwgtaUSo1RVFRIG9ZXiFYg==" + }, + "node_modules/punycode": { + "version": "2.3.1", + "resolved": "https://registry.npmjs.org/punycode/-/punycode-2.3.1.tgz", + "integrity": "sha512-vYt7UD1U9Wg6138shLtLOvdAu+8DsC/ilFtEVHcH+wydcSpNE20AfSOduf6MkRFahL5FY7X1oU7nKVZFtfq8Fg==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/pure-rand": { + "version": "6.1.0", + "resolved": "https://registry.npmjs.org/pure-rand/-/pure-rand-6.1.0.tgz", + "integrity": "sha512-bVWawvoZoBYpp6yIoQtQXHZjmz35RSVHnUOTefl8Vcjr8snTPY1wnpSPMWekcFwbxI6gtmT7rSYPFvz71ldiOA==", + "dev": true, + "funding": [ + { + "type": "individual", + "url": "https://github.com/sponsors/dubzzz" + }, + { + "type": "opencollective", + "url": "https://opencollective.com/fast-check" + } + ] + }, + "node_modules/queue-microtask": { + "version": "1.2.3", + "resolved": "https://registry.npmjs.org/queue-microtask/-/queue-microtask-1.2.3.tgz", + "integrity": "sha512-NuaNSa6flKT5JaSYQzJok04JzTL1CA6aGhv5rfLW3PgqA+M2ChpZQnAC8h8i4ZFkBS8X5RqkDBHA7r4hej3K9A==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ] + }, + "node_modules/quickselect": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-3.0.0.tgz", + "integrity": "sha512-XdjUArbK4Bm5fLLvlm5KpTFOiOThgfWWI4axAZDWg4E/0mKdZyI9tNEfds27qCi1ze/vwTR16kvmmGhRra3c2g==" + }, + "node_modules/rbush": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/rbush/-/rbush-3.0.1.tgz", + "integrity": "sha512-XRaVO0YecOpEuIvbhbpTrZgoiI6xBlz6hnlr6EHhd+0x9ase6EmeN+hdwwUaJvLcsFFQ8iWVF1GAK1yB0BWi0w==", + "dependencies": { + "quickselect": "^2.0.0" + } + }, + "node_modules/rbush/node_modules/quickselect": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/quickselect/-/quickselect-2.0.0.tgz", + "integrity": "sha512-RKJ22hX8mHe3Y6wH/N3wCM6BWtjaxIyyUIkpHOvfFnxdI4yD4tBXEBKSbriGujF6jnSVkJrffuo6vxACiSSxIw==" + }, + "node_modules/react-is": { + "version": "18.3.1", + "resolved": "https://registry.npmjs.org/react-is/-/react-is-18.3.1.tgz", + "integrity": "sha512-/LLMVyas0ljjAtoYiPqYiL8VWXzUUdThrmU5+n20DZv+a+ClRoevUzw5JxU+Ieh5/c87ytoTBV9G1FiKfNJdmg==", + "dev": true + }, + "node_modules/reflect.getprototypeof": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/reflect.getprototypeof/-/reflect.getprototypeof-1.0.6.tgz", + "integrity": "sha512-fmfw4XgoDke3kdI6h4xcUz1dG8uaiv5q9gcEwLS4Pnth2kxT+GZ7YehS1JTMGBQmtV7Y4GFGbs2re2NqhdozUg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.1", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "globalthis": "^1.0.3", + "which-builtin-type": "^1.1.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/regexp.prototype.flags": { + "version": "1.5.2", + "resolved": "https://registry.npmjs.org/regexp.prototype.flags/-/regexp.prototype.flags-1.5.2.tgz", + "integrity": "sha512-NcDiDkTLuPR+++OCKB0nWafEmhg/Da8aUPLPMQbK+bxKKCm1/S5he+AqYa4PlMCVBalb4/yxIRub6qkEx5yJbw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "define-properties": "^1.2.1", + "es-errors": "^1.3.0", + "set-function-name": "^2.0.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/require-directory": { + "version": "2.1.1", + "resolved": "https://registry.npmjs.org/require-directory/-/require-directory-2.1.1.tgz", + "integrity": "sha512-fGxEI7+wsG9xrvdjsrlmL22OMTTiHRwAMroiEeMgq8gzoLC/PQr7RsRDSTLUg/bZAZtF+TVIkHc6/4RIKrui+Q==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/resolve": { + "version": "1.22.8", + "resolved": "https://registry.npmjs.org/resolve/-/resolve-1.22.8.tgz", + "integrity": "sha512-oKWePCxqpd6FlLvGV1VU0x7bkPmmCNolxzjMf4NczoDnQcIWrAF+cPtZn5i6n+RfD2d9i0tzpKnG6Yk168yIyw==", + "dev": true, + "dependencies": { + "is-core-module": "^2.13.0", + "path-parse": "^1.0.7", + "supports-preserve-symlinks-flag": "^1.0.0" + }, + "bin": { + "resolve": "bin/resolve" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/resolve-cwd": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/resolve-cwd/-/resolve-cwd-3.0.0.tgz", + "integrity": "sha512-OrZaX2Mb+rJCpH/6CpSqt9xFVpN++x01XnN2ie9g6P5/3xelLAkXWVADpdz1IHD/KFfEXyE6V0U01OQ3UO2rEg==", + "dev": true, + "dependencies": { + "resolve-from": "^5.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-cwd/node_modules/resolve-from": { + "version": "5.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-5.0.0.tgz", + "integrity": "sha512-qYg9KP24dD5qka9J47d0aVky0N+b4fTU89LN9iDnjB5waksiC49rvMB0PrUJQGoTmH50XPiqOvAjDfaijGxYZw==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/resolve-from": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/resolve-from/-/resolve-from-4.0.0.tgz", + "integrity": "sha512-pb/MYmXstAkysRFx8piNI1tGFNQIFA3vkE3Gq4EuA1dF6gHp/+vgZqsCGJapvy8N3Q+4o7FwvquPJcnZ7RYy4g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/resolve-pkg-maps": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/resolve-pkg-maps/-/resolve-pkg-maps-1.0.0.tgz", + "integrity": "sha512-seS2Tj26TBVOC2NIc2rOe2y2ZO7efxITtLZcGSOnHHNOQ7CkiUBfw0Iw2ck6xkIhPwLhKNLS8BO+hEpngQlqzw==", + "dev": true, + "funding": { + "url": "https://github.com/privatenumber/resolve-pkg-maps?sponsor=1" + } + }, + "node_modules/resolve-protobuf-schema": { + "version": "2.1.0", + "resolved": "https://registry.npmjs.org/resolve-protobuf-schema/-/resolve-protobuf-schema-2.1.0.tgz", + "integrity": "sha512-kI5ffTiZWmJaS/huM8wZfEMer1eRd7oJQhDuxeCLe3t7N7mX3z94CN0xPxBQxFYQTSNz9T0i+v6inKqSdK8xrQ==", + "dependencies": { + "protocol-buffers-schema": "^3.3.1" + } + }, + "node_modules/resolve.exports": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/resolve.exports/-/resolve.exports-2.0.2.tgz", + "integrity": "sha512-X2UW6Nw3n/aMgDVy+0rSqgHlv39WZAlZrXCdnbyEiKm17DSqHX4MmQMaST3FbeWR5FTuRcUwYAziZajji0Y7mg==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/reusify": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/reusify/-/reusify-1.0.4.tgz", + "integrity": "sha512-U9nH88a3fc/ekCF1l0/UP1IosiuIjyTh7hBvXVMHYgVcfGvt897Xguj2UOLDeI5BG2m7/uwyaLVT6fbtCwTyzw==", + "dev": true, + "engines": { + "iojs": ">=1.0.0", + "node": ">=0.10.0" + } + }, + "node_modules/rimraf": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/rimraf/-/rimraf-3.0.2.tgz", + "integrity": "sha512-JZkJMZkAGFFPP2YqXZXPbMlMBgsxzE8ILs4lMIX/2o0L9UBw9O/Y3o6wFw/i9YLapcUJWwqbi3kdxIPdC62TIA==", + "deprecated": "Rimraf versions prior to v4 are no longer supported", + "dev": true, + "dependencies": { + "glob": "^7.1.3" + }, + "bin": { + "rimraf": "bin.js" + }, + "funding": { + "url": "https://github.com/sponsors/isaacs" + } + }, + "node_modules/robust-predicates": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/robust-predicates/-/robust-predicates-3.0.2.tgz", + "integrity": "sha512-IXgzBWvWQwE6PrDI05OvmXUIruQTcoMDzRsOd5CDvHCVLcLHMTSYvOK5Cm46kWqlV3yAbuSpBZdJ5oP5OUoStg==" + }, + "node_modules/rollup": { + "version": "4.28.1", + "resolved": "https://registry.npmjs.org/rollup/-/rollup-4.28.1.tgz", + "integrity": "sha512-61fXYl/qNVinKmGSTHAZ6Yy8I3YIJC/r2m9feHo6SwVAVcLT5MPwOUFe7EuURA/4m0NR8lXG4BBXuo/IZEsjMg==", + "devOptional": true, + "dependencies": { + "@types/estree": "1.0.6" + }, + "bin": { + "rollup": "dist/bin/rollup" + }, + "engines": { + "node": ">=18.0.0", + "npm": ">=8.0.0" + }, + "optionalDependencies": { + "@rollup/rollup-android-arm-eabi": "4.28.1", + "@rollup/rollup-android-arm64": "4.28.1", + "@rollup/rollup-darwin-arm64": "4.28.1", + "@rollup/rollup-darwin-x64": "4.28.1", + "@rollup/rollup-freebsd-arm64": "4.28.1", + "@rollup/rollup-freebsd-x64": "4.28.1", + "@rollup/rollup-linux-arm-gnueabihf": "4.28.1", + "@rollup/rollup-linux-arm-musleabihf": "4.28.1", + "@rollup/rollup-linux-arm64-gnu": "4.28.1", + "@rollup/rollup-linux-arm64-musl": "4.28.1", + "@rollup/rollup-linux-loongarch64-gnu": "4.28.1", + "@rollup/rollup-linux-powerpc64le-gnu": "4.28.1", + "@rollup/rollup-linux-riscv64-gnu": "4.28.1", + "@rollup/rollup-linux-s390x-gnu": "4.28.1", + "@rollup/rollup-linux-x64-gnu": "4.28.1", + "@rollup/rollup-linux-x64-musl": "4.28.1", + "@rollup/rollup-win32-arm64-msvc": "4.28.1", + "@rollup/rollup-win32-ia32-msvc": "4.28.1", + "@rollup/rollup-win32-x64-msvc": "4.28.1", + "fsevents": "~2.3.2" + } + }, + "node_modules/run-parallel": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/run-parallel/-/run-parallel-1.2.0.tgz", + "integrity": "sha512-5l4VyZR86LZ/lDxZTR6jqL8AFE2S0IFLMP26AbjsLVADxHdhB/c0GUsH+y39UfCi3dzz8OlQuPmnaJOMoDHQBA==", + "dev": true, + "funding": [ + { + "type": "github", + "url": "https://github.com/sponsors/feross" + }, + { + "type": "patreon", + "url": "https://www.patreon.com/feross" + }, + { + "type": "consulting", + "url": "https://feross.org/support" + } + ], + "dependencies": { + "queue-microtask": "^1.2.2" + } + }, + "node_modules/rw": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/rw/-/rw-1.3.3.tgz", + "integrity": "sha512-PdhdWy89SiZogBLaw42zdeqtRJ//zFd2PgQavcICDUgJT5oW10QCRKbJ6bg4r0/UY2M6BWd5tkxuGFRvCkgfHQ==" + }, + "node_modules/safe-array-concat": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/safe-array-concat/-/safe-array-concat-1.1.2.tgz", + "integrity": "sha512-vj6RsCsWBCf19jIeHEfkRMw8DPiBb+DMXklQ/1SGDHOMlHdPUkZXFQ2YdplS23zESTijAcurb1aSgJA3AgMu1Q==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "get-intrinsic": "^1.2.4", + "has-symbols": "^1.0.3", + "isarray": "^2.0.5" + }, + "engines": { + "node": ">=0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safe-regex-test": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/safe-regex-test/-/safe-regex-test-1.0.3.tgz", + "integrity": "sha512-CdASjNJPvRa7roO6Ra/gLYBTzYzzPyyBXxIMdGW3USQLyjWEls2RgW5UBTXaQVp+OrpeCK3bLem8smtmheoRuw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.6", + "es-errors": "^1.3.0", + "is-regex": "^1.1.4" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/safer-buffer": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/safer-buffer/-/safer-buffer-2.1.2.tgz", + "integrity": "sha512-YZo3K82SD7Riyi0E1EQPojLz7kpepnSQI9IyPbHHg1XXXevb5dJI7tpyN2ADxGcQbHG7vcyRHk0cbwqcQriUtg==" + }, + "node_modules/semver": { + "version": "7.6.3", + "resolved": "https://registry.npmjs.org/semver/-/semver-7.6.3.tgz", + "integrity": "sha512-oVekP1cKtI+CTDvHWYFUcMtsK/00wmAEfyqKfNdARm8u1wNVhSgaX7A8d4UuIlUI5e84iEwOhs7ZPYRmzU9U6A==", + "dev": true, + "bin": { + "semver": "bin/semver.js" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/serialize-to-js": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/serialize-to-js/-/serialize-to-js-3.1.2.tgz", + "integrity": "sha512-owllqNuDDEimQat7EPG0tH7JjO090xKNzUtYz6X+Sk2BXDnOCilDdNLwjWeFywG9xkJul1ULvtUQa9O4pUaY0w==", + "dev": true, + "engines": { + "node": ">=4.0.0" + } + }, + "node_modules/set-function-length": { + "version": "1.2.2", + "resolved": "https://registry.npmjs.org/set-function-length/-/set-function-length-1.2.2.tgz", + "integrity": "sha512-pgRc4hJ4/sNjWCSS9AmnS40x3bNMDTknHgL5UaMBTMyJnU90EgWh1Rz+MC9eFu4BuN/UwZjKQuY/1v3rM7HMfg==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "function-bind": "^1.1.2", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-function-name": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/set-function-name/-/set-function-name-2.0.2.tgz", + "integrity": "sha512-7PGFlmtwsEADb0WYyvCMa1t+yke6daIG4Wirafur5kcf+MhUnPms1UeR0CKQdTZD81yESwMHbtn+TR+dMviakQ==", + "dev": true, + "dependencies": { + "define-data-property": "^1.1.4", + "es-errors": "^1.3.0", + "functions-have-names": "^1.2.3", + "has-property-descriptors": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/set-value": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/set-value/-/set-value-2.0.1.tgz", + "integrity": "sha512-JxHc1weCN68wRY0fhCoXpyK55m/XPHafOmK4UWD7m2CI14GMcFypt4w/0+NV5f/ZMby2F6S2wwA7fgynh9gWSw==", + "dependencies": { + "extend-shallow": "^2.0.1", + "is-extendable": "^0.1.1", + "is-plain-object": "^2.0.3", + "split-string": "^3.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/shebang-command": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/shebang-command/-/shebang-command-2.0.0.tgz", + "integrity": "sha512-kHxr2zZpYtdmrN1qDjrrX/Z1rR1kG8Dx+gkpK1G4eXmvXswmcE1hTWBWYUzlraYw1/yZp6YuDY77YtvbN0dmDA==", + "dev": true, + "dependencies": { + "shebang-regex": "^3.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/shebang-regex": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/shebang-regex/-/shebang-regex-3.0.0.tgz", + "integrity": "sha512-7++dFhtcx3353uBaq8DDR4NuxBetBzC7ZQOhmTQInHEd6bSrXdiEyzCvG07Z44UYdLShWUyXt5M/yhz8ekcb1A==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/side-channel": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/side-channel/-/side-channel-1.0.6.tgz", + "integrity": "sha512-fDW/EZ6Q9RiO8eFG8Hj+7u/oW+XrPTIChwCOM2+th2A6OblDtYYIpve9m+KvI9Z4C9qSEXlaGR6bTEYHReuglA==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "get-intrinsic": "^1.2.4", + "object-inspect": "^1.13.1" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/signal-exit": { + "version": "3.0.7", + "resolved": "https://registry.npmjs.org/signal-exit/-/signal-exit-3.0.7.tgz", + "integrity": "sha512-wnD2ZE+l+SPC/uoS0vXeE9L1+0wuaMqKlfz9AMUo38JsyLSBWSFcHR1Rri62LZc12vLr1gb3jl7iwQhgwpAbGQ==", + "dev": true + }, + "node_modules/sisteransi": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/sisteransi/-/sisteransi-1.0.5.tgz", + "integrity": "sha512-bLGGlR1QxBcynn2d5YmDX4MGjlZvy2MRBDRNHLJ8VI6l6+9FUiyTFNJ0IveOSP0bcXgVDPRcfGqA0pjaqUpfVg==", + "dev": true + }, + "node_modules/skmeans": { + "version": "0.9.7", + "resolved": "https://registry.npmjs.org/skmeans/-/skmeans-0.9.7.tgz", + "integrity": "sha512-hNj1/oZ7ygsfmPZ7ZfN5MUBRoGg1gtpnImuJBgLO0ljQ67DtJuiQaiYdS4lUA6s0KCwnPhGivtC/WRwIZLkHyg==" + }, + "node_modules/slash": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/slash/-/slash-3.0.0.tgz", + "integrity": "sha512-g9Q1haeby36OSStwb4ntCGGGaKsaVSjQ68fBxoQcutl5fS1vuY18H3wSt3jFyFtrkx+Kz0V1G85A4MyAdDMi2Q==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/sort-asc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sort-asc/-/sort-asc-0.2.0.tgz", + "integrity": "sha512-umMGhjPeHAI6YjABoSTrFp2zaBtXBej1a0yKkuMUyjjqu6FJsTF+JYwCswWDg+zJfk/5npWUUbd33HH/WLzpaA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-desc": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/sort-desc/-/sort-desc-0.2.0.tgz", + "integrity": "sha512-NqZqyvL4VPW+RAxxXnB8gvE1kyikh8+pR+T+CXLksVRN9eiQqkQlPwqWYU0mF9Jm7UnctShlxLyAt1CaBOTL1w==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sort-object": { + "version": "3.0.3", + "resolved": "https://registry.npmjs.org/sort-object/-/sort-object-3.0.3.tgz", + "integrity": "sha512-nK7WOY8jik6zaG9CRwZTaD5O7ETWDLZYMM12pqY8htll+7dYeqGfEUPcUBHOpSJg2vJOrvFIY2Dl5cX2ih1hAQ==", + "dependencies": { + "bytewise": "^1.1.0", + "get-value": "^2.0.2", + "is-extendable": "^0.1.1", + "sort-asc": "^0.2.0", + "sort-desc": "^0.2.0", + "union-value": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sortablejs": { + "version": "1.14.0", + "resolved": "https://registry.npmjs.org/sortablejs/-/sortablejs-1.14.0.tgz", + "integrity": "sha512-pBXvQCs5/33fdN1/39pPL0NZF20LeRbLQ5jtnheIPN9JQAaufGjKdWduZn4U7wCtVuzKhmRkI0DFYHYRbB2H1w==" + }, + "node_modules/source-map": { + "version": "0.6.1", + "resolved": "https://registry.npmjs.org/source-map/-/source-map-0.6.1.tgz", + "integrity": "sha512-UjgapumWlbMhkBgzT7Ykc5YXUT46F0iKu8SGXq0bcwP5dz/h0Plj6enJqjz1Zbq2l5WaqYnrVbwWOWMyF3F47g==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-js": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/source-map-js/-/source-map-js-1.2.1.tgz", + "integrity": "sha512-UXWMKhLOwVKb728IUtQPXxfYU+usdybtUrK/8uGE8CQMvrhOpwvzDBwj0QhSL7MQc7vIsISBG8VQ8+IDQxpfQA==", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/source-map-support": { + "version": "0.5.13", + "resolved": "https://registry.npmjs.org/source-map-support/-/source-map-support-0.5.13.tgz", + "integrity": "sha512-SHSKFHadjVA5oR4PPqhtAVdcBWwRYVd6g6cAXnIbRiIwc2EhPrTuKUBdSLvlEKyIP3GCf89fltvcZiP9MMFA1w==", + "dev": true, + "dependencies": { + "buffer-from": "^1.0.0", + "source-map": "^0.6.0" + } + }, + "node_modules/splaytree": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/splaytree/-/splaytree-3.1.2.tgz", + "integrity": "sha512-4OM2BJgC5UzrhVnnJA4BkHKGtjXNzzUfpQjCO8I05xYPsfS/VuQDwjCGGMi8rYQilHEV4j8NBqTFbls/PZEE7A==" + }, + "node_modules/split-string": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/split-string/-/split-string-3.1.0.tgz", + "integrity": "sha512-NzNVhJDYpwceVVii8/Hu6DKfD2G+NrQHlS/V/qgv763EYudVwEcMQNxd2lh+0VrUByXN/oJkl5grOhYWvQUYiw==", + "dependencies": { + "extend-shallow": "^3.0.0" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/extend-shallow": { + "version": "3.0.2", + "resolved": "https://registry.npmjs.org/extend-shallow/-/extend-shallow-3.0.2.tgz", + "integrity": "sha512-BwY5b5Ql4+qZoefgMj2NUmx+tehVTH/Kf4k1ZEtOHNFcm2wSxMRo992l6X3TIgni2eZVTZ85xMOjF31fwZAj6Q==", + "dependencies": { + "assign-symbols": "^1.0.0", + "is-extendable": "^1.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/split-string/node_modules/is-extendable": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/is-extendable/-/is-extendable-1.0.1.tgz", + "integrity": "sha512-arnXMxT1hhoKo9k1LZdmlNyJdDDfy2v0fXjFlmok4+i8ul/6WlbVge9bhM74OpNPQPMGUToDtz+KXa1PneJxOA==", + "dependencies": { + "is-plain-object": "^2.0.4" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/sprintf-js": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/sprintf-js/-/sprintf-js-1.0.3.tgz", + "integrity": "sha512-D9cPgkvLlV3t3IzL0D0YLvGA9Ahk4PcvVwUbN0dSGr1aP0Nrt4AEnTUbuGvquEC0mA64Gqt1fzirlRs5ibXx8g==", + "dev": true + }, + "node_modules/stack-utils": { + "version": "2.0.6", + "resolved": "https://registry.npmjs.org/stack-utils/-/stack-utils-2.0.6.tgz", + "integrity": "sha512-XlkWvfIm6RmsWtNJx+uqtKLS8eqFbxUg0ZzLXqY0caEy9l7hruX8IpiDnjsLavoBgqCCR71TqWO8MaXYheJ3RQ==", + "dev": true, + "dependencies": { + "escape-string-regexp": "^2.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/stack-utils/node_modules/escape-string-regexp": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/escape-string-regexp/-/escape-string-regexp-2.0.0.tgz", + "integrity": "sha512-UpzcLCXolUWcNu5HtVMHYdXJjArjsF9C0aNnquZYY4uW/Vu0miy5YoWvbV345HauVvcAUnpRuhMMcqTcGOY2+w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/stop-iteration-iterator": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/stop-iteration-iterator/-/stop-iteration-iterator-1.0.0.tgz", + "integrity": "sha512-iCGQj+0l0HOdZ2AEeBADlsRC+vsnDsZsbdSiH1yNSjcfKM7fdpCMfqAL/dwF5BLiw/XhRft/Wax6zQbhq2BcjQ==", + "dev": true, + "dependencies": { + "internal-slot": "^1.0.4" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/string-length": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/string-length/-/string-length-4.0.2.tgz", + "integrity": "sha512-+l6rNN5fYHNhZZy41RXsYptCjA2Igmq4EG7kZAYFQI1E1VTXarr6ZPXBg6eq7Y6eK4FEhY6AJlyuFIb/v/S0VQ==", + "dev": true, + "dependencies": { + "char-regex": "^1.0.2", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + } + }, + "node_modules/string-width": { + "version": "4.2.3", + "resolved": "https://registry.npmjs.org/string-width/-/string-width-4.2.3.tgz", + "integrity": "sha512-wKyQRQpjJ0sIp62ErSZdGsjMJWsap5oRNihHhu6G7JVO/9jIB6UyevL+tXuOqrng8j/cxKTWyWUwvSTriiZz/g==", + "dev": true, + "dependencies": { + "emoji-regex": "^8.0.0", + "is-fullwidth-code-point": "^3.0.0", + "strip-ansi": "^6.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/string-width/node_modules/emoji-regex": { + "version": "8.0.0", + "resolved": "https://registry.npmjs.org/emoji-regex/-/emoji-regex-8.0.0.tgz", + "integrity": "sha512-MSjYzcWNOA0ewAHpz0MxpYFvwg6yjy1NG3xteoqz644VCo/RPgnr1/GGt+ic3iJTzQ8Eu3TdM14SawnVUmGE6A==", + "dev": true + }, + "node_modules/string.prototype.includes": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.includes/-/string.prototype.includes-2.0.0.tgz", + "integrity": "sha512-E34CkBgyeqNDcrbU76cDjL5JLcVrtSdYq0MEh/B10r17pRP4ciHLwTgnuLV8Ay6cgEMLkcBkFCKyFZ43YldYzg==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.matchall": { + "version": "4.0.11", + "resolved": "https://registry.npmjs.org/string.prototype.matchall/-/string.prototype.matchall-4.0.11.tgz", + "integrity": "sha512-NUdh0aDavY2og7IbBPenWqR9exH+E26Sv8e0/eTe1tltDGZL+GtBkDAnnyBtmekfK6/Dq3MkcGtzXFEd1LQrtg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.2", + "es-errors": "^1.3.0", + "es-object-atoms": "^1.0.0", + "get-intrinsic": "^1.2.4", + "gopd": "^1.0.1", + "has-symbols": "^1.0.3", + "internal-slot": "^1.0.7", + "regexp.prototype.flags": "^1.5.2", + "set-function-name": "^2.0.2", + "side-channel": "^1.0.6" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.repeat": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/string.prototype.repeat/-/string.prototype.repeat-1.0.0.tgz", + "integrity": "sha512-0u/TldDbKD8bFCQ/4f5+mNRrXwZ8hg2w7ZR8wa16e8z9XpePWl3eGEcUD0OXpEH/VJH/2G3gjUtR3ZOiBe2S/w==", + "dev": true, + "dependencies": { + "define-properties": "^1.1.3", + "es-abstract": "^1.17.5" + } + }, + "node_modules/string.prototype.trim": { + "version": "1.2.9", + "resolved": "https://registry.npmjs.org/string.prototype.trim/-/string.prototype.trim-1.2.9.tgz", + "integrity": "sha512-klHuCNxiMZ8MlsOihJhJEBJAiMVqU3Z2nEXWfWnIqjN0gEFS9J9+IxKozWWtQGcgoa1WUZzLjKPTr4ZHNFTFxw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-abstract": "^1.23.0", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimend": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimend/-/string.prototype.trimend-1.0.8.tgz", + "integrity": "sha512-p73uL5VCHCO2BZZ6krwwQE3kCzM7NKmis8S//xEC6fQonchbum4eP6kR4DLEjQFO3Wnj3Fuo8NM0kOSjVdHjZQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/string.prototype.trimstart": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/string.prototype.trimstart/-/string.prototype.trimstart-1.0.8.tgz", + "integrity": "sha512-UXSH262CSZY1tfu3G3Secr6uGLCFVPMhIqHjlgCUtCCcgihYc/xKs9djMTMUOb2j1mVSeU8EU6NWc/iQKU6Gfg==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "define-properties": "^1.2.1", + "es-object-atoms": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/strip-ansi": { + "version": "6.0.1", + "resolved": "https://registry.npmjs.org/strip-ansi/-/strip-ansi-6.0.1.tgz", + "integrity": "sha512-Y38VPSHcqkFrCpFnQ9vuSXmquuv5oXOKpGeT6aGrr3o3Gc9AlVa6JBfUSOCnbxGGZF+/0ooI7KrPuUSztUdU5A==", + "dev": true, + "dependencies": { + "ansi-regex": "^5.0.1" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-bom": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-4.0.0.tgz", + "integrity": "sha512-3xurFv5tEgii33Zi8Jtp55wEIILR9eh34FAW00PZf+JnSsTmV/ioewSgQl97JHvgjoRGwPShsWm+IdrxB35d0w==", + "dev": true, + "engines": { + "node": ">=8" + } + }, + "node_modules/strip-final-newline": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/strip-final-newline/-/strip-final-newline-2.0.0.tgz", + "integrity": "sha512-BrpvfNAE3dcvq7ll3xVumzjKjZQ5tI1sEUIKr3Uoks0XUl45St3FlatVqef9prk4jRDzhW6WZg+3bk93y6pLjA==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/strip-json-comments": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/strip-json-comments/-/strip-json-comments-3.1.1.tgz", + "integrity": "sha512-6fPc+R4ihwqP6N/aIv2f1gMH8lOVtWQHoqC4yK6oSDVVocumAsfCqjkXnqiYMhmMwS/mEHLp7Vehlt3ql6lEig==", + "dev": true, + "engines": { + "node": ">=8" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/supercluster": { + "version": "8.0.1", + "resolved": "https://registry.npmjs.org/supercluster/-/supercluster-8.0.1.tgz", + "integrity": "sha512-IiOea5kJ9iqzD2t7QJq/cREyLHTtSmUT6gQsweojg9WH2sYJqZK9SswTu6jrscO6D1G5v5vYZ9ru/eq85lXeZQ==", + "dependencies": { + "kdbush": "^4.0.2" + } + }, + "node_modules/supports-color": { + "version": "7.2.0", + "resolved": "https://registry.npmjs.org/supports-color/-/supports-color-7.2.0.tgz", + "integrity": "sha512-qpCAvRl9stuOHveKsn7HncJRvv501qIacKzQlO/+Lwxc9+0q2wLyv4Dfvt80/DPn2pqOBsJdDiogXGR9+OvwRw==", + "dev": true, + "dependencies": { + "has-flag": "^4.0.0" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/supports-preserve-symlinks-flag": { + "version": "1.0.0", + "resolved": "https://registry.npmjs.org/supports-preserve-symlinks-flag/-/supports-preserve-symlinks-flag-1.0.0.tgz", + "integrity": "sha512-ot0WnXS9fgdkgIcePe6RHNk1WA8+muPa6cSjeR3V8K27q9BB1rTE3R1p7Hv0z1ZyAc8s6Vvv8DIyWf681MAt0w==", + "dev": true, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/sweepline-intersections": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/sweepline-intersections/-/sweepline-intersections-1.5.0.tgz", + "integrity": "sha512-AoVmx72QHpKtItPu72TzFL+kcYjd67BPLDoR0LarIk+xyaRg+pDTMFXndIEvZf9xEKnJv6JdhgRMnocoG0D3AQ==", + "dependencies": { + "tinyqueue": "^2.0.0" + } + }, + "node_modules/sweepline-intersections/node_modules/tinyqueue": { + "version": "2.0.3", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-2.0.3.tgz", + "integrity": "sha512-ppJZNDuKGgxzkHihX8v9v9G5f+18gzaTfrukGrq6ueg0lmH4nqVnA2IPG0AEH3jKEk2GRJCUhDoqpoiw3PHLBA==" + }, + "node_modules/tapable": { + "version": "2.2.1", + "resolved": "https://registry.npmjs.org/tapable/-/tapable-2.2.1.tgz", + "integrity": "sha512-GNzQvQTOIP6RyTfE2Qxb8ZVlNmw0n88vp1szwWRimP02mnTsx3Wtn5qRdqY9w2XduFNUgvOwhNnQsjwCp+kqaQ==", + "dev": true, + "engines": { + "node": ">=6" + } + }, + "node_modules/test-exclude": { + "version": "6.0.0", + "resolved": "https://registry.npmjs.org/test-exclude/-/test-exclude-6.0.0.tgz", + "integrity": "sha512-cAGWPIyOHU6zlmg88jwm7VRyXnMN7iV68OGAbYDk/Mh/xC/pzVPlQtY6ngoIH/5/tciuhGfvESU8GrHrcxD56w==", + "dev": true, + "dependencies": { + "@istanbuljs/schema": "^0.1.2", + "glob": "^7.1.4", + "minimatch": "^3.0.4" + }, + "engines": { + "node": ">=8" + } + }, + "node_modules/test-exclude/node_modules/brace-expansion": { + "version": "1.1.11", + "resolved": "https://registry.npmjs.org/brace-expansion/-/brace-expansion-1.1.11.tgz", + "integrity": "sha512-iCuPHDFgrHX7H2vEI/5xpz07zSHB00TpugqhmYtVmMO6518mCuRMoOYFldEBl0g187ufozdaHgWKcYFb61qGiA==", + "dev": true, + "dependencies": { + "balanced-match": "^1.0.0", + "concat-map": "0.0.1" + } + }, + "node_modules/test-exclude/node_modules/minimatch": { + "version": "3.1.2", + "resolved": "https://registry.npmjs.org/minimatch/-/minimatch-3.1.2.tgz", + "integrity": "sha512-J7p63hRiAjw1NDEww1W7i37+ByIrOWO5XQQAzZ3VOcL0PNybwpfmV/N05zFAzwQ9USyEcX6t3UO+K5aqBQOIHw==", + "dev": true, + "dependencies": { + "brace-expansion": "^1.1.7" + }, + "engines": { + "node": "*" + } + }, + "node_modules/text-table": { + "version": "0.2.0", + "resolved": "https://registry.npmjs.org/text-table/-/text-table-0.2.0.tgz", + "integrity": "sha512-N+8UisAXDGk8PFXP4HAzVR9nbfmVJ3zYLAWiTIoqC5v5isinhr+r5uaO8+7r3BMfuNIufIsA7RdpVgacC2cSpw==", + "dev": true + }, + "node_modules/tinyqueue": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/tinyqueue/-/tinyqueue-3.0.0.tgz", + "integrity": "sha512-gRa9gwYU3ECmQYv3lslts5hxuIa90veaEcxDYuu3QGOIAEM2mOZkVHp48ANJuu1CURtRdHKUBY5Lm1tHV+sD4g==" + }, + "node_modules/tmpl": { + "version": "1.0.5", + "resolved": "https://registry.npmjs.org/tmpl/-/tmpl-1.0.5.tgz", + "integrity": "sha512-3f0uOEAQwIqGuWW2MVzYg8fV/QNnc/IpuJNG837rLuczAaLVHslWHZQj4IGiEl5Hs3kkbhwL9Ab7Hrsmuj+Smw==", + "dev": true + }, + "node_modules/to-fast-properties": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/to-fast-properties/-/to-fast-properties-2.0.0.tgz", + "integrity": "sha512-/OaKK0xYrs3DmxRYqL/yDc+FxFUVYhDlXMhRmv3z915w2HF1tnN1omB354j8VUGO/hbRzyD6Y3sA7v7GS/ceog==", + "engines": { + "node": ">=4" + } + }, + "node_modules/to-regex-range": { + "version": "5.0.1", + "resolved": "https://registry.npmjs.org/to-regex-range/-/to-regex-range-5.0.1.tgz", + "integrity": "sha512-65P7iz6X5yEr1cwcgvQxbbIw7Uk3gOy5dIdtZ4rDveLqhrdJP+Li/Hx6tyK0NEb+2GCyneCMJiGqrADCSNk8sQ==", + "dev": true, + "dependencies": { + "is-number": "^7.0.0" + }, + "engines": { + "node": ">=8.0" + } + }, + "node_modules/topojson-client": { + "version": "3.1.0", + "resolved": "https://registry.npmjs.org/topojson-client/-/topojson-client-3.1.0.tgz", + "integrity": "sha512-605uxS6bcYxGXw9qi62XyrV6Q3xwbndjachmNxu8HWTtVPxZfEJN9fd/SZS1Q54Sn2y0TMyMxFj/cJINqGHrKw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "topo2geo": "bin/topo2geo", + "topomerge": "bin/topomerge", + "topoquantize": "bin/topoquantize" + } + }, + "node_modules/topojson-client/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/topojson-server": { + "version": "3.0.1", + "resolved": "https://registry.npmjs.org/topojson-server/-/topojson-server-3.0.1.tgz", + "integrity": "sha512-/VS9j/ffKr2XAOjlZ9CgyyeLmgJ9dMwq6Y0YEON8O7p/tGGk+dCWnrE03zEdu7i4L7YsFZLEPZPzCvcB7lEEXw==", + "dependencies": { + "commander": "2" + }, + "bin": { + "geo2topo": "bin/geo2topo" + } + }, + "node_modules/topojson-server/node_modules/commander": { + "version": "2.20.3", + "resolved": "https://registry.npmjs.org/commander/-/commander-2.20.3.tgz", + "integrity": "sha512-GpVkmM8vF2vQUkj2LvZmD35JxeJOLCwJ9cUkugyk2nuhbv3+mJvpLYYt+0+USMxE+oj+ey/lJEnhZw75x/OMcQ==" + }, + "node_modules/ts-api-utils": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/ts-api-utils/-/ts-api-utils-1.3.0.tgz", + "integrity": "sha512-UQMIo7pb8WRomKR1/+MFVLTroIvDVtMX3K6OUir8ynLyzB8Jeriont2bTAtmNPa1ekAgN7YPDyf6V+ygrdU+eQ==", + "dev": true, + "engines": { + "node": ">=16" + }, + "peerDependencies": { + "typescript": ">=4.2.0" + } + }, + "node_modules/tsconfig-paths": { + "version": "3.15.0", + "resolved": "https://registry.npmjs.org/tsconfig-paths/-/tsconfig-paths-3.15.0.tgz", + "integrity": "sha512-2Ac2RgzDe/cn48GvOe3M+o82pEFewD3UPbyoUHHdKasHwJKjds4fLXWf/Ux5kATBKN20oaFGu+jbElp1pos0mg==", + "dev": true, + "dependencies": { + "@types/json5": "^0.0.29", + "json5": "^1.0.2", + "minimist": "^1.2.6", + "strip-bom": "^3.0.0" + } + }, + "node_modules/tsconfig-paths/node_modules/json5": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/json5/-/json5-1.0.2.tgz", + "integrity": "sha512-g1MWMLBiz8FKi1e4w0UyVL3w+iJceWAFBAaBnnGKOpNa5f8TLktkbre1+s6oICydWAm+HRUGTmI+//xv2hvXYA==", + "dev": true, + "dependencies": { + "minimist": "^1.2.0" + }, + "bin": { + "json5": "lib/cli.js" + } + }, + "node_modules/tsconfig-paths/node_modules/strip-bom": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/strip-bom/-/strip-bom-3.0.0.tgz", + "integrity": "sha512-vavAMRXOgBVNF6nyEEmL3DBK19iRpDcoIwW+swQ+CbGiu7lju6t+JklA1MHweoWtadgt4ISVUsXLyDq34ddcwA==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/tslib": { + "version": "2.8.1", + "resolved": "https://registry.npmjs.org/tslib/-/tslib-2.8.1.tgz", + "integrity": "sha512-oJFu94HQb+KVduSUQL7wnpmqnfmLsOA/nAh6b6EH0wCEoK0/mPeXU6c3wKDV83MkOuHPRHtSXKKU99IBazS/2w==" + }, + "node_modules/type-check": { + "version": "0.4.0", + "resolved": "https://registry.npmjs.org/type-check/-/type-check-0.4.0.tgz", + "integrity": "sha512-XleUoc9uwGXqjWwXaUTZAmzMcFZ5858QA2vvx1Ur5xIcixXIP+8LnFDgRplU30us6teqdlskFfu+ae4K79Ooew==", + "dev": true, + "dependencies": { + "prelude-ls": "^1.2.1" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/type-detect": { + "version": "4.0.8", + "resolved": "https://registry.npmjs.org/type-detect/-/type-detect-4.0.8.tgz", + "integrity": "sha512-0fr/mIH1dlO+x7TlcMy+bIDqKPsw/70tVyeHW787goQjhmqaZe10uwLujubK9q9Lg6Fiho1KUKDYz0Z7k7g5/g==", + "dev": true, + "engines": { + "node": ">=4" + } + }, + "node_modules/type-fest": { + "version": "0.20.2", + "resolved": "https://registry.npmjs.org/type-fest/-/type-fest-0.20.2.tgz", + "integrity": "sha512-Ne+eE4r0/iWnpAxD852z3A+N0Bt5RN//NjJwRd2VFHEmrywxf5vsZlh4R6lixl6B+wz/8d+maTSAkN1FIkI3LQ==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + }, + "node_modules/typed-array-buffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-buffer/-/typed-array-buffer-1.0.2.tgz", + "integrity": "sha512-gEymJYKZtKXzzBzM4jqa9w6Q1Jjm7x2d+sh19AdsD4wqnMPDYyvwpsIc2Q/835kHuo3BEQ7CjelGhfTsoBb2MQ==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "es-errors": "^1.3.0", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + } + }, + "node_modules/typed-array-byte-length": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/typed-array-byte-length/-/typed-array-byte-length-1.0.1.tgz", + "integrity": "sha512-3iMJ9q0ao7WE9tWcaYKIptkNBuOIcZCCT0d4MRvuuH88fEoEH62IuQe0OtraD3ebQEoTRk8XCBoknUNc1Y67pw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-byte-offset": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/typed-array-byte-offset/-/typed-array-byte-offset-1.0.2.tgz", + "integrity": "sha512-Ous0vodHa56FviZucS2E63zkgtgrACj7omjwd/8lTEMEPFFyjfixMZ1ZXenpgCFBBt4EC1J2XsyVS2gkG0eTFA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typed-array-length": { + "version": "1.0.6", + "resolved": "https://registry.npmjs.org/typed-array-length/-/typed-array-length-1.0.6.tgz", + "integrity": "sha512-/OxDN6OtAk5KBpGb28T+HZc2M+ADtvRxXrKKbUwtsLgdoxgX13hyy7ek6bFRl5+aBs2yZzB0c4CnQfAtVypW/g==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-proto": "^1.0.3", + "is-typed-array": "^1.1.13", + "possible-typed-array-names": "^1.0.0" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/typescript": { + "version": "5.6.2", + "resolved": "https://registry.npmjs.org/typescript/-/typescript-5.6.2.tgz", + "integrity": "sha512-NW8ByodCSNCwZeghjN3o+JX5OFH0Ojg6sadjEKY4huZ52TqbJTJnDo5+Tw98lSy63NZvi4n+ez5m2u5d4PkZyw==", + "devOptional": true, + "bin": { + "tsc": "bin/tsc", + "tsserver": "bin/tsserver" + }, + "engines": { + "node": ">=14.17" + } + }, + "node_modules/typewise": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/typewise/-/typewise-1.0.3.tgz", + "integrity": "sha512-aXofE06xGhaQSPzt8hlTY+/YWQhm9P0jYUp1f2XtmW/3Bk0qzXcyFWAtPoo2uTGQj1ZwbDuSyuxicq+aDo8lCQ==", + "dependencies": { + "typewise-core": "^1.2.0" + } + }, + "node_modules/typewise-core": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/typewise-core/-/typewise-core-1.2.0.tgz", + "integrity": "sha512-2SCC/WLzj2SbUwzFOzqMCkz5amXLlxtJqDKTICqg30x+2DZxcfZN2MvQZmGfXWKNWaKK9pBPsvkcwv8bF/gxKg==" + }, + "node_modules/unbox-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/unbox-primitive/-/unbox-primitive-1.0.2.tgz", + "integrity": "sha512-61pPlCD9h51VoreyJ0BReideM3MDKMKnh6+V9L08331ipq6Q8OFXZYiqP6n/tbHx4s5I9uRhcye6BrbkizkBDw==", + "dev": true, + "dependencies": { + "call-bind": "^1.0.2", + "has-bigints": "^1.0.2", + "has-symbols": "^1.0.3", + "which-boxed-primitive": "^1.0.2" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/undici-types": { + "version": "6.19.8", + "resolved": "https://registry.npmjs.org/undici-types/-/undici-types-6.19.8.tgz", + "integrity": "sha512-ve2KP6f/JnbPBFyobGHuerC9g1FYGn/F8n1LWTwNxCEzd6IfqTwUQcNXgEtmmQ6DlRrC1hrSrBnCZPokRrDHjw==", + "devOptional": true + }, + "node_modules/union-value": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/union-value/-/union-value-1.0.1.tgz", + "integrity": "sha512-tJfXmxMeWYnczCVs7XAEvIV7ieppALdyepWMkHkwciRpZraG/xwT+s2JN8+pr1+8jCRf80FFzvr+MpQeeoF4Xg==", + "dependencies": { + "arr-union": "^3.1.0", + "get-value": "^2.0.6", + "is-extendable": "^0.1.1", + "set-value": "^2.0.1" + }, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/upath": { + "version": "2.0.1", + "resolved": "https://registry.npmjs.org/upath/-/upath-2.0.1.tgz", + "integrity": "sha512-1uEe95xksV1O0CYKXo8vQvN1JEbtJp7lb7C5U9HMsIp6IVwntkH/oNUzyVNQSd4S1sYk2FpSSW44FqMc8qee5w==", + "devOptional": true, + "engines": { + "node": ">=4", + "yarn": "*" + } + }, + "node_modules/update-browserslist-db": { + "version": "1.1.0", + "resolved": "https://registry.npmjs.org/update-browserslist-db/-/update-browserslist-db-1.1.0.tgz", + "integrity": "sha512-EdRAaAyk2cUE1wOf2DkEhzxqOQvFOoRJFNS6NeyJ01Gp2beMRpBAINjM2iDXE3KCuKhwnvHIQCJm6ThL2Z+HzQ==", + "dev": true, + "funding": [ + { + "type": "opencollective", + "url": "https://opencollective.com/browserslist" + }, + { + "type": "tidelift", + "url": "https://tidelift.com/funding/github/npm/browserslist" + }, + { + "type": "github", + "url": "https://github.com/sponsors/ai" + } + ], + "dependencies": { + "escalade": "^3.1.2", + "picocolors": "^1.0.1" + }, + "bin": { + "update-browserslist-db": "cli.js" + }, + "peerDependencies": { + "browserslist": ">= 4.21.0" + } + }, + "node_modules/uri-js": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/uri-js/-/uri-js-4.4.1.tgz", + "integrity": "sha512-7rKUyy33Q1yc98pQ1DAmLtwX109F7TIfWlW1Ydo8Wl1ii1SeHieeh0HHfPeL2fMXK6z0s8ecKs9frCuLJvndBg==", + "dev": true, + "dependencies": { + "punycode": "^2.1.0" + } + }, + "node_modules/util-deprecate": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/util-deprecate/-/util-deprecate-1.0.2.tgz", + "integrity": "sha512-EPD5q1uXyFxJpCrLnCc1nHnq3gOa6DZBocAIiI2TaSCA7VCJ1UJDMagCzIkXNsUYfD1daK//LTEQ8xiIbrHtcw==", + "dev": true + }, + "node_modules/v8-to-istanbul": { + "version": "9.3.0", + "resolved": "https://registry.npmjs.org/v8-to-istanbul/-/v8-to-istanbul-9.3.0.tgz", + "integrity": "sha512-kiGUalWN+rgBJ/1OHZsBtU4rXZOfj/7rKQxULKlIzwzQSvMJUUNgPwJEEh7gU6xEVxC0ahoOBvN2YI8GH6FNgA==", + "dev": true, + "dependencies": { + "@jridgewell/trace-mapping": "^0.3.12", + "@types/istanbul-lib-coverage": "^2.0.1", + "convert-source-map": "^2.0.0" + }, + "engines": { + "node": ">=10.12.0" + } + }, + "node_modules/vite": { + "version": "5.4.11", + "resolved": "https://registry.npmjs.org/vite/-/vite-5.4.11.tgz", + "integrity": "sha512-c7jFQRklXua0mTzneGW9QVyxFjUgwcihC4bXEtujIo2ouWCe1Ajt/amn2PCxYnhYfd5k09JX3SB7OYWFKYqj8Q==", + "devOptional": true, + "dependencies": { + "esbuild": "^0.21.3", + "postcss": "^8.4.43", + "rollup": "^4.20.0" + }, + "bin": { + "vite": "bin/vite.js" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "funding": { + "url": "https://github.com/vitejs/vite?sponsor=1" + }, + "optionalDependencies": { + "fsevents": "~2.3.3" + }, + "peerDependencies": { + "@types/node": "^18.0.0 || >=20.0.0", + "less": "*", + "lightningcss": "^1.21.0", + "sass": "*", + "sass-embedded": "*", + "stylus": "*", + "sugarss": "*", + "terser": "^5.4.0" + }, + "peerDependenciesMeta": { + "@types/node": { + "optional": true + }, + "less": { + "optional": true + }, + "lightningcss": { + "optional": true + }, + "sass": { + "optional": true + }, + "sass-embedded": { + "optional": true + }, + "stylus": { + "optional": true + }, + "sugarss": { + "optional": true + }, + "terser": { + "optional": true + } + } + }, + "node_modules/vite-plugin-vuetify": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/vite-plugin-vuetify/-/vite-plugin-vuetify-2.0.4.tgz", + "integrity": "sha512-A4cliYUoP/u4AWSRVRvAPKgpgR987Pss7LpFa7s1GvOe8WjgDq92Rt3eVXrvgxGCWvZsPKziVqfHHdCMqeDhfw==", + "devOptional": true, + "dependencies": { + "@vuetify/loader-shared": "^2.0.3", + "debug": "^4.3.3", + "upath": "^2.0.1" + }, + "engines": { + "node": "^18.0.0 || >=20.0.0" + }, + "peerDependencies": { + "vite": ">=5", + "vue": "^3.0.0", + "vuetify": "^3.0.0" + } + }, + "node_modules/vscode-uri": { + "version": "3.0.8", + "resolved": "https://registry.npmjs.org/vscode-uri/-/vscode-uri-3.0.8.tgz", + "integrity": "sha512-AyFQ0EVmsOZOlAnxoFOGOq1SQDWAB7C6aqMGS23svWAllfOaxbuFvcT8D1i8z3Gyn8fraVeZNNmN6e9bxxXkKw==", + "dev": true + }, + "node_modules/vt-pbf": { + "version": "3.1.3", + "resolved": "https://registry.npmjs.org/vt-pbf/-/vt-pbf-3.1.3.tgz", + "integrity": "sha512-2LzDFzt0mZKZ9IpVF2r69G9bXaP2Q2sArJCmcCgvfTdCCZzSyz4aCLoQyUilu37Ll56tCblIZrXFIjNUpGIlmA==", + "dependencies": { + "@mapbox/point-geometry": "0.1.0", + "@mapbox/vector-tile": "^1.3.1", + "pbf": "^3.2.1" + } + }, + "node_modules/vue": { + "version": "3.5.6", + "resolved": "https://registry.npmjs.org/vue/-/vue-3.5.6.tgz", + "integrity": "sha512-zv+20E2VIYbcJOzJPUWp03NOGFhMmpCKOfSxVTmCYyYFFko48H9tmuQFzYj7tu4qX1AeXlp9DmhIP89/sSxxhw==", + "dependencies": { + "@vue/compiler-dom": "3.5.6", + "@vue/compiler-sfc": "3.5.6", + "@vue/runtime-dom": "3.5.6", + "@vue/server-renderer": "3.5.6", + "@vue/shared": "3.5.6" + }, + "peerDependencies": { + "typescript": "*" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + } + } + }, + "node_modules/vue-eslint-parser": { + "version": "9.4.3", + "resolved": "https://registry.npmjs.org/vue-eslint-parser/-/vue-eslint-parser-9.4.3.tgz", + "integrity": "sha512-2rYRLWlIpaiN8xbPiDyXZXRgLGOtWxERV7ND5fFAv5qo1D2N9Fu9MNajBNc6o13lZ+24DAWCkQCvj4klgmcITg==", + "dev": true, + "dependencies": { + "debug": "^4.3.4", + "eslint-scope": "^7.1.1", + "eslint-visitor-keys": "^3.3.0", + "espree": "^9.3.1", + "esquery": "^1.4.0", + "lodash": "^4.17.21", + "semver": "^7.3.6" + }, + "engines": { + "node": "^14.17.0 || >=16.0.0" + }, + "funding": { + "url": "https://github.com/sponsors/mysticatea" + }, + "peerDependencies": { + "eslint": ">=6.0.0" + } + }, + "node_modules/vue-router": { + "version": "4.4.5", + "resolved": "https://registry.npmjs.org/vue-router/-/vue-router-4.4.5.tgz", + "integrity": "sha512-4fKZygS8cH1yCyuabAXGUAsyi1b2/o/OKgu/RUb+znIYOxPRxdkytJEx+0wGcpBE1pX6vUgh5jwWOKRGvuA/7Q==", + "dependencies": { + "@vue/devtools-api": "^6.6.4" + }, + "funding": { + "url": "https://github.com/sponsors/posva" + }, + "peerDependencies": { + "vue": "^3.2.0" + } + }, + "node_modules/vue-tsc": { + "version": "2.1.6", + "resolved": "https://registry.npmjs.org/vue-tsc/-/vue-tsc-2.1.6.tgz", + "integrity": "sha512-f98dyZp5FOukcYmbFpuSCJ4Z0vHSOSmxGttZJCsFeX0M4w/Rsq0s4uKXjcSRsZqsRgQa6z7SfuO+y0HVICE57Q==", + "dev": true, + "dependencies": { + "@volar/typescript": "~2.4.1", + "@vue/language-core": "2.1.6", + "semver": "^7.5.4" + }, + "bin": { + "vue-tsc": "bin/vue-tsc.js" + }, + "peerDependencies": { + "typescript": ">=5.0.0" + } + }, + "node_modules/vuedraggable": { + "version": "4.1.0", + "resolved": "https://registry.npmjs.org/vuedraggable/-/vuedraggable-4.1.0.tgz", + "integrity": "sha512-FU5HCWBmsf20GpP3eudURW3WdWTKIbEIQxh9/8GE806hydR9qZqRRxRE3RjqX7PkuLuMQG/A7n3cfj9rCEchww==", + "dependencies": { + "sortablejs": "1.14.0" + }, + "peerDependencies": { + "vue": "^3.0.1" + } + }, + "node_modules/vuetify": { + "version": "3.7.1", + "resolved": "https://registry.npmjs.org/vuetify/-/vuetify-3.7.1.tgz", + "integrity": "sha512-N1XlczbgeGt/O+JUk72QPrqcDaRIXUdptUciJqGyTvZ9cfMoSlEWs6TZO+dOOfXbKvmIMFMycYg4dgSHDpCPhg==", + "engines": { + "node": "^12.20 || >=14.13" + }, + "funding": { + "type": "github", + "url": "https://github.com/sponsors/johnleider" + }, + "peerDependencies": { + "typescript": ">=4.7", + "vite-plugin-vuetify": ">=1.0.0", + "vue": "^3.3.0", + "webpack-plugin-vuetify": ">=2.0.0" + }, + "peerDependenciesMeta": { + "typescript": { + "optional": true + }, + "vite-plugin-vuetify": { + "optional": true + }, + "webpack-plugin-vuetify": { + "optional": true + } + } + }, + "node_modules/walker": { + "version": "1.0.8", + "resolved": "https://registry.npmjs.org/walker/-/walker-1.0.8.tgz", + "integrity": "sha512-ts/8E8l5b7kY0vlWLewOkDXMmPdLcVV4GmOQLyxuSswIJsweeFZtAsMF7k1Nszz+TYBQrlYRmzOnr398y1JemQ==", + "dev": true, + "dependencies": { + "makeerror": "1.0.12" + } + }, + "node_modules/wgs84": { + "version": "0.0.0", + "resolved": "https://registry.npmjs.org/wgs84/-/wgs84-0.0.0.tgz", + "integrity": "sha512-ANHlY4Rb5kHw40D0NJ6moaVfOCMrp9Gpd1R/AIQYg2ko4/jzcJ+TVXYYF6kXJqQwITvEZP4yEthjM7U6rYlljQ==" + }, + "node_modules/which": { + "version": "2.0.2", + "resolved": "https://registry.npmjs.org/which/-/which-2.0.2.tgz", + "integrity": "sha512-BLI3Tl1TW3Pvl70l3yq3Y64i+awpwXqsGBYWkkqMtnbXgrMD+yj7rhW0kuEDxzJaYXGjEW5ogapKNMEKNMjibA==", + "dev": true, + "dependencies": { + "isexe": "^2.0.0" + }, + "bin": { + "node-which": "bin/node-which" + }, + "engines": { + "node": ">= 8" + } + }, + "node_modules/which-boxed-primitive": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-boxed-primitive/-/which-boxed-primitive-1.0.2.tgz", + "integrity": "sha512-bwZdv0AKLpplFY2KZRX6TvyuN7ojjr7lwkg6ml0roIy9YeuSr7JS372qlNW18UQYzgYK9ziGcerWqZOmEn9VNg==", + "dev": true, + "dependencies": { + "is-bigint": "^1.0.1", + "is-boolean-object": "^1.1.0", + "is-number-object": "^1.0.4", + "is-string": "^1.0.5", + "is-symbol": "^1.0.3" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-builtin-type": { + "version": "1.1.4", + "resolved": "https://registry.npmjs.org/which-builtin-type/-/which-builtin-type-1.1.4.tgz", + "integrity": "sha512-bppkmBSsHFmIMSl8BO9TbsyzsvGjVoppt8xUiGzwiu/bhDCGxnpOKCxgqj6GuyHE0mINMDecBFPlOm2hzY084w==", + "dev": true, + "dependencies": { + "function.prototype.name": "^1.1.6", + "has-tostringtag": "^1.0.2", + "is-async-function": "^2.0.0", + "is-date-object": "^1.0.5", + "is-finalizationregistry": "^1.0.2", + "is-generator-function": "^1.0.10", + "is-regex": "^1.1.4", + "is-weakref": "^1.0.2", + "isarray": "^2.0.5", + "which-boxed-primitive": "^1.0.2", + "which-collection": "^1.0.2", + "which-typed-array": "^1.1.15" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-collection": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/which-collection/-/which-collection-1.0.2.tgz", + "integrity": "sha512-K4jVyjnBdgvc86Y6BkaLZEN933SwYOuBFkdmBu9ZfkcAbdVbpITnDmjvZ/aQjRXQrv5EPkTnD1s39GiiqbngCw==", + "dev": true, + "dependencies": { + "is-map": "^2.0.3", + "is-set": "^2.0.3", + "is-weakmap": "^2.0.2", + "is-weakset": "^2.0.3" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/which-typed-array": { + "version": "1.1.15", + "resolved": "https://registry.npmjs.org/which-typed-array/-/which-typed-array-1.1.15.tgz", + "integrity": "sha512-oV0jmFtUky6CXfkqehVvBP/LSWJ2sy4vWMioiENyJLePrBO/yKyV9OyJySfAKosh+RYkIl5zJCNZ8/4JncrpdA==", + "dev": true, + "dependencies": { + "available-typed-arrays": "^1.0.7", + "call-bind": "^1.0.7", + "for-each": "^0.3.3", + "gopd": "^1.0.1", + "has-tostringtag": "^1.0.2" + }, + "engines": { + "node": ">= 0.4" + }, + "funding": { + "url": "https://github.com/sponsors/ljharb" + } + }, + "node_modules/word-wrap": { + "version": "1.2.5", + "resolved": "https://registry.npmjs.org/word-wrap/-/word-wrap-1.2.5.tgz", + "integrity": "sha512-BN22B5eaMMI9UMtjrGd5g5eCYPpCPDUy0FJXbYsaT5zYxjFOckS53SQDE3pWkVoWpHXVb3BrYcEN4Twa55B5cA==", + "dev": true, + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/wrap-ansi": { + "version": "7.0.0", + "resolved": "https://registry.npmjs.org/wrap-ansi/-/wrap-ansi-7.0.0.tgz", + "integrity": "sha512-YVGIj2kamLSTxw6NsZjoBxfSwsn0ycdesmc4p+Q21c5zPuZ1pl+NfxVdxPtdHvmNVOQ6XSYG4AUtyt/Fi7D16Q==", + "dev": true, + "dependencies": { + "ansi-styles": "^4.0.0", + "string-width": "^4.1.0", + "strip-ansi": "^6.0.0" + }, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/chalk/wrap-ansi?sponsor=1" + } + }, + "node_modules/wrappy": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/wrappy/-/wrappy-1.0.2.tgz", + "integrity": "sha512-l4Sp/DRseor9wL6EvV2+TuQn63dMkPjZ/sp9XkghTEbV9KlPS1xUsZ3u7/IQO4wxtcFB4bgpQPRcR3QCvezPcQ==", + "dev": true + }, + "node_modules/write-file-atomic": { + "version": "4.0.2", + "resolved": "https://registry.npmjs.org/write-file-atomic/-/write-file-atomic-4.0.2.tgz", + "integrity": "sha512-7KxauUdBmSdWnmpaGFg+ppNjKF8uNLry8LyzjauQDOVONfFLNKrKvQOxZ/VuTIcS/gge/YNahf5RIIQWTSarlg==", + "dev": true, + "dependencies": { + "imurmurhash": "^0.1.4", + "signal-exit": "^3.0.7" + }, + "engines": { + "node": "^12.13.0 || ^14.15.0 || >=16.0.0" + } + }, + "node_modules/xml-name-validator": { + "version": "4.0.0", + "resolved": "https://registry.npmjs.org/xml-name-validator/-/xml-name-validator-4.0.0.tgz", + "integrity": "sha512-ICP2e+jsHvAj2E2lIHxa5tjXRlKDJo4IdvPvCXbXQGdzSfmSpNVyIKMvoZHjDY9DP0zV17iI85o90vRFXNccRw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/y18n": { + "version": "5.0.8", + "resolved": "https://registry.npmjs.org/y18n/-/y18n-5.0.8.tgz", + "integrity": "sha512-0pfFzegeDWJHJIAmTLRP2DwHjdF5s7jo9tuztdQxAhINCdvS+3nGINqPd00AphqJR/0LhANUS6/+7SCb98YOfA==", + "dev": true, + "engines": { + "node": ">=10" + } + }, + "node_modules/yallist": { + "version": "3.1.1", + "resolved": "https://registry.npmjs.org/yallist/-/yallist-3.1.1.tgz", + "integrity": "sha512-a4UGQaWPH59mOXUYnAG2ewncQS4i4F43Tv3JoAM+s2VDAmS9NsK8GpDMLrCHPksFT7h3K6TOoUNn2pb7RoXx4g==", + "dev": true + }, + "node_modules/yargs": { + "version": "17.7.2", + "resolved": "https://registry.npmjs.org/yargs/-/yargs-17.7.2.tgz", + "integrity": "sha512-7dSzzRQ++CKnNI/krKnYRV7JKKPUXMEh61soaHKg9mrWEhzFWhFnxPxGl+69cD1Ou63C13NUPCnmIcrvqCuM6w==", + "dev": true, + "dependencies": { + "cliui": "^8.0.1", + "escalade": "^3.1.1", + "get-caller-file": "^2.0.5", + "require-directory": "^2.1.1", + "string-width": "^4.2.3", + "y18n": "^5.0.5", + "yargs-parser": "^21.1.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/yargs-parser": { + "version": "21.1.1", + "resolved": "https://registry.npmjs.org/yargs-parser/-/yargs-parser-21.1.1.tgz", + "integrity": "sha512-tVpsJW7DdjecAiFpbIB1e3qxIQsE6NoPc5/eTdrbbIC4h0LVsWhnoa3g+m2HclBIujHzsxZ4VJVA+GUuc2/LBw==", + "dev": true, + "engines": { + "node": ">=12" + } + }, + "node_modules/yocto-queue": { + "version": "0.1.0", + "resolved": "https://registry.npmjs.org/yocto-queue/-/yocto-queue-0.1.0.tgz", + "integrity": "sha512-rVksvsnNCdJ/ohGc6xgPwyN8eheCxsiLM8mxuE/t/mOVqJewPuO1miLpTHQiRgTKCLexL4MeAFVagts7HmNZ2Q==", + "dev": true, + "engines": { + "node": ">=10" + }, + "funding": { + "url": "https://github.com/sponsors/sindresorhus" + } + } + } +} diff --git a/client/package.json b/client/package.json new file mode 100644 index 0000000..422973e --- /dev/null +++ b/client/package.json @@ -0,0 +1,91 @@ +{ + "name": "client", + "private": true, + "version": "0.0.0", + "type": "module", + "scripts": { + "dev": "vite", + "build": "vite build", + "preview": "vite preview", + "format": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --fix src", + "lint": "eslint --ext .js,.ts,.vue --ignore-path .gitignore --no-fix src", + "test:unit": "jest", + "type": "vue-tsc --noEmit" + }, + "dependencies": { + "@girder/oauth-client": "^0.8.0", + "@mapbox/mapbox-gl-draw": "^1.5.0", + "@mdi/font": "^7.4.47", + "@turf/bearing": "^7.1.0", + "@turf/center": "^7.1.0", + "@turf/centroid": "^7.1.0", + "@turf/destination": "^7.1.0", + "@turf/distance": "^7.1.0", + "@turf/helpers": "^7.1.0", + "@turf/midpoint": "^7.1.0", + "@turf/transform-rotate": "^7.1.0", + "@turf/transform-scale": "^7.1.0", + "@turf/turf": "^7.1.0", + "axios": "^1.4.0", + "d3": "^7.9.0", + "django-s3-file-field": "^1.0.1", + "lodash": "^4.17.21", + "maplibre-gl": "^4.7.0", + "pmtiles": "^3.2.1", + "vue": "^3.4.29", + "vue-router": "^4.4.0", + "vuedraggable": "^4.1.0", + "vuetify": "^3.6.13" + }, + "devDependencies": { + "@types/d3": "^7.4.3", + "@types/jest": "^29.5.12", + "@types/lodash": "^4.17.7", + "@types/mapbox__mapbox-gl-draw": "^1.4.6", + "@vitejs/plugin-vue": "^5.0.5", + "@vue/eslint-config-airbnb-with-typescript": "^8.0.0", + "@vue/eslint-config-typescript": "^13.0.0", + "eslint": "^8.57.0", + "eslint-plugin-vue": "^9.27.0", + "jest": "^29.7.0", + "typescript": "^5.2.2", + "vite": "^5.3.1", + "vite-plugin-vuetify": "^2.0.3", + "vue-tsc": "^2.0.21" + }, + "eslintConfig": { + "root": true, + "env": { + "node": true + }, + "parser": "vue-eslint-parser", + "parserOptions": { + "parser": "@typescript-eslint/parser" + }, + "plugins": [ + "@typescript-eslint" + ], + "extends": [ + "@vue/eslint-config-airbnb-with-typescript", + "plugin:@typescript-eslint/recommended", + "plugin:vue/vue3-recommended" + ], + "rules": { + "vue/no-template-shadow": 0, + "vue/multi-word-component-names": "off", + "vue/max-len": [ + "warn", + { + "code": 130 + } + ], + "vue/no-setup-props-destructure": 0, + "sort-imports": [ + "error", + { + "ignoreDeclarationSort": true + } + ] + } + } +} diff --git a/client/public/favicon.ico b/client/public/favicon.ico new file mode 100644 index 0000000..5f74602 Binary files /dev/null and b/client/public/favicon.ico differ diff --git a/client/public/vectortiles/.gitignore b/client/public/vectortiles/.gitignore new file mode 100644 index 0000000..c851fdf --- /dev/null +++ b/client/public/vectortiles/.gitignore @@ -0,0 +1 @@ +*.pmtiles diff --git a/client/src/App.vue b/client/src/App.vue new file mode 100644 index 0000000..e60f2eb --- /dev/null +++ b/client/src/App.vue @@ -0,0 +1,7 @@ + diff --git a/client/src/MapStore.ts b/client/src/MapStore.ts new file mode 100644 index 0000000..2924052 --- /dev/null +++ b/client/src/MapStore.ts @@ -0,0 +1,210 @@ +import { + Ref, computed, reactive, ref, +} from 'vue'; +import { + ClickedProps, + Context, + Dataset, + LayerCollection, + NetCDFData, + NetCDFLayer, + RasterMapLayer, + VectorMapLayer, +} from './types'; +import UVdatApi from './api/UVDATApi'; + +export const VECTOR_PMTILES_URL = '/public/vectortiles/us.pmtiles'; + +async function isVectorBaseMapAvailable(vectorMapUrl: string) { + const resp = await fetch(vectorMapUrl, { method: 'HEAD' }); + return Number(resp.headers.get('content-length') ?? 0) > 0 && resp.status === 200; +} + +type SideBarCard = 'indicators' | 'charts'; + +export default class MapStore { + public static osmBaseMap = ref<'none' | 'osm-raster' | 'osm-vector'>('osm-vector'); + + public static userIsStaff = computed(() => !!UVdatApi.user?.is_staff); + + public static proModeButtonEnabled = ref(true); + + // Ability to toggle proMode so Staff users can see what other users see. + public static proMode = computed(() => MapStore.userIsStaff.value && MapStore.proModeButtonEnabled.value); + + public static vectorBaseMapAvailable = ref(true); + + public static tvaOutlineLayer = ref(true); + + public static naipSatelliteLayer = ref(false); + + public static tdotSatelliteLayer = ref(false); + + // Collection + public static availableCollections = ref([]); + + public static selectedCollection = ref(null); + + // Context + public static availableContexts = ref([]); + + public static selectedContextId = ref(null); + + // Datasets + public static datasetsByContext = reactive>({}); + + // Layers + public static mapLayersByDataset = reactive>({}); + + public static selectedMapLayers = ref<(VectorMapLayer | RasterMapLayer | NetCDFLayer)[]>([]); + + public static visibleMapLayers: Ref> = ref(new Set()); + + public static selectedVectorMapLayers: Ref = computed( + () => MapStore.selectedMapLayers.value.filter((layer) => layer.type === 'vector'), + ); + + public static selectedRasterMapLayers: Ref = computed( + () => MapStore.selectedMapLayers.value.filter((layer) => layer.type === 'raster'), + ); + + public static selectedNetCDFMapLayers: Ref = computed( + () => this.selectedMapLayers.value.filter((layer) => layer.type === 'netcdf'), + ); + + public static async loadCollections() { + MapStore.availableCollections.value = await UVdatApi.getLayerCollections(); + } + + public static async loadContexts() { + MapStore.availableContexts.value = await UVdatApi.getContexts(); + } + + public static async loadGlobalDatasets(filters:{ unconnected: boolean }) { + const data = await UVdatApi.getGlobalDatasets(filters); + return data; + } + + public static async loadDatasets(contextId: number) { + // Doesn't guard against multiple calls to loadDatasets with the same contextId, + // but that scenario isn't a concern. Also, no cancellation behavior. + if (contextId in MapStore.datasetsByContext) return; + MapStore.datasetsByContext[contextId] = await UVdatApi.getContextDatasets(contextId); + } + + public static async loadLayers(datasetId: number, force = false) { + // Doesn't guard against multiple calls to loadDatasets with the same contextId, + // but that scenario isn't a concern. Also, no cancellation behavior. + if (datasetId in MapStore.mapLayersByDataset && !force) return; + MapStore.mapLayersByDataset[datasetId] = await UVdatApi.getDatasetLayers(datasetId); + } + + // ToolTips + public static toolTipMenuOpen = ref(false); + + public static toolTipsEnabled = ref(false); + + public static toolTipDisplay: Ref> = ref({}); + + // eslint-disable-next-line @typescript-eslint/no-explicit-any + public static selectedFeatures: Ref = ref([]); + + public static addSelectedFeature = (clicked: ClickedProps) => { + const found = MapStore.selectedFeatures.value.find((item) => item.id === clicked.id); + if (!found) { + MapStore.selectedFeatures.value.push(clicked); + } + }; + + public static clearSelectedFeatures = () => { + MapStore.selectedFeatures.value = []; + }; + + public static removeSelectedFeature = (id: number) => { + const foundIndex = MapStore.selectedFeatures.value.findIndex((item) => item.id === id); + if (foundIndex !== -1) { + MapStore.selectedFeatures.value.splice(foundIndex, 1); + } + }; + + public static selectedFeatureExpanded = ref(true); + + public static selectedIds = computed(() => MapStore.selectedFeatures.value.map((item) => item.properties.vectorfeatureid)); + + public static pollForVectorBasemap = (pollInterval: number = 5000) => { + let cancelled = false; + + async function check() { + if (cancelled) return; + + if (await isVectorBaseMapAvailable(VECTOR_PMTILES_URL)) { + MapStore.vectorBaseMapAvailable.value = true; + } else { + setTimeout(() => { + check(); + }, pollInterval); + } + } + check(); + + return { + cancel: () => { + cancelled = true; + }, + }; + }; + + // Charts + public static chartsOpen = ref(false); + + // SideBar Cards + public static activeSideBarCard: Ref = ref(undefined); + + public static sideBarCardSettings: Ref< + Record> = ref( + { + indicators: { + name: 'Indicators', width: 450, icon: 'mdi-thermometer', enabled: false, key: 'indicators', + }, + charts: { + name: 'Chart', width: 650, icon: 'mdi-chart-bar', enabled: false, key: 'charts', + }, + }, + ); + + public static sideBarOpen = computed(() => ( + !!(MapStore.activeSideBarCard && Object.values(MapStore.sideBarCardSettings.value).find((item) => item.enabled)))); + + public static currentSideBarWidth = computed(() => { + if (!MapStore.activeSideBarCard.value) { + return 0; + } + return MapStore.sideBarCardSettings.value[MapStore.activeSideBarCard.value].width; + }); + + public static toggleContext = (card: SideBarCard) => { + MapStore.sideBarCardSettings.value[card].enabled = !MapStore.sideBarCardSettings.value[card].enabled; + if (MapStore.sideBarCardSettings.value[card].enabled) { + MapStore.activeSideBarCard.value = card; + Object.keys(MapStore.sideBarCardSettings.value).forEach((key) => { + if (key !== card) { + MapStore.sideBarCardSettings.value[key as SideBarCard].enabled = false; + } + }); + } else { + const found = Object.values(MapStore.sideBarCardSettings.value).find((item) => item.enabled); + if (found) { + MapStore.activeSideBarCard.value = found.key; + } else { + MapStore.activeSideBarCard.value = undefined; + } + } + }; + + public static closeSideBar = () => { + MapStore.activeSideBarCard.value = undefined; + Object.keys(MapStore.sideBarCardSettings.value).forEach((key) => { + MapStore.sideBarCardSettings.value[key as SideBarCard].enabled = false; + }); + }; +} diff --git a/client/src/api/UVDATApi.ts b/client/src/api/UVDATApi.ts new file mode 100644 index 0000000..197eeda --- /dev/null +++ b/client/src/api/UVDATApi.ts @@ -0,0 +1,497 @@ +import axios, { AxiosInstance, AxiosRequestHeaders } from 'axios'; +import { ref } from 'vue'; +import OauthClient from '@girder/oauth-client/dist/oauth-client'; +import { + AbstractMapLayer, + Chart, + Context, + ContextWithIds, + Dataset, + DerivedRegion, + FileItem, + LayerCollection, + LayerCollectionLayer, + LayerRepresentation, + NetCDFData, + NetCDFImages, + NetCDFLayer, + NetworkNode, + ProcessingTask, + PropertySummary, + RasterData, + RasterMapLayer, + SimulationType, + VectorMapLayer, +} from '../types'; + +export const currentError = ref(); + +export interface MetadataResponse { + levels: number; + sizeX: number; + sizeY: number; + tileWidth: number; + tileHeight: number; + magnification: number | null; + mm_x: number; + mm_y: number; + dtype: string; // Data type, e.g., "float32" + bandCount: number; + geospatial: boolean; + sourceLevels: number; + sourceSizeX: number; + sourceSizeY: number; + bounds?: Bounds; + projection: string | null; + sourceBounds?: Bounds; + bands: Record; + frames: FrameInfo[] | false; +} + +interface Bounds { + ll: Coordinate; // Lower-left coordinate + ul: Coordinate; // Upper-left coordinate + lr: Coordinate; // Lower-right coordinate + ur: Coordinate; // Upper-right coordinate + srs: string; // Spatial reference system + xmin: number; + xmax: number; + ymin: number; + ymax: number; +} + +interface Coordinate { + x: number; + y: number; +} + +export interface BandInfo { + min: number; + max: number; + mean: number; + stdev: number; + interpretation: string; // e.g., "gray" + nodata?: number | null; +} + +interface FrameInfo { + frame: string; + bands: BandInfo[]; +} + +export interface NetCDFGenerateParams { + netcdf_data_id: number; + variable: string; + name: string; + description?: string; + sliding_variable?: string; + x_variable?: string; + y_variable?: string; + color_map?: string; + additional_vars?: string; + xRange?: [number, number]; + yRange?: [number, number]; + slicerRange?: [number, number]; +} +export interface NetCDFPreviewParams { + netcdf_data_id: number; + variable: string; + i: number; + sliding_variable?: string; + x_variable?: string; + y_variable?: string; + color_map?: string; + additional_vars?: string; + xRange?: [number, number]; + yRange?: [number, number]; + slicerRange?: [number, number]; +} +interface User { + id: number; + username: string; + is_staff: boolean; +} + +interface AddDatasetParams { + name: string; + description?: string; + category?: string; + // eslint-disable-next-line @typescript-eslint/no-explicit-any + metadata: Record; +} + +const baseURL = new URL((import.meta.env.VUE_APP_API_ROOT as string || 'http://localhost:8000/api/v1/'), window.location.origin); + +const UVDATApiRoot = ''; // If we have another location this would be modified +export default class UVdatApi { + public static apiClient: AxiosInstance; + + public static baseURL = `${baseURL}${UVDATApiRoot}/`; + + public static user: User | null = null; + + public static get origin(): string { + return baseURL.origin; + } + + public static initialize(oauthClient: OauthClient) { + UVdatApi.apiClient = axios.create({ + baseURL: `${baseURL}`, + headers: oauthClient?.authHeaders, + }); + + UVdatApi.apiClient.interceptors.request.use((config) => ({ + ...config, + headers: { + ...oauthClient?.authHeaders, + ...config.headers, + } as AxiosRequestHeaders, + })); + } + + public static async fetchCurrentUser() : Promise { + const { data, status } = await UVdatApi.apiClient.get('/users/me/'); + if (status === 204) { + UVdatApi.user = null; + } else if (status === 200) { + UVdatApi.user = { + id: data.id, + username: data.username, + is_staff: data.is_staff, + }; + } else { + throw new Error('Failed to fetch current user'); + } + return UVdatApi.user; + } + + public static async getContexts(): Promise { + return (await UVdatApi.apiClient.get('contexts')).data.results; + } + + public static async getContext(id: number): Promise { + return (await UVdatApi.apiClient.get(`contexts/${id}/`)).data; + } + + public static async getContextDatasets( + contextId: number, + ): Promise { + return (await UVdatApi.apiClient.get(`datasets?context=${contextId}`)).data.results; + } + + public static async getContextCharts(contextId: number): Promise { + return (await UVdatApi.apiClient.get(`charts?context=${contextId}`)).data.results; + } + + public static async getContextDerivedRegions( + contextId: number, + ): Promise { + return (await UVdatApi.apiClient.get(`derived-regions?context=${contextId}`)).data + .results; + } + + public static async getContextSimulationTypes( + contextId: number, + ): Promise { + return (await UVdatApi.apiClient.get(`simulations/available/context/${contextId}`)) + .data; + } + + public static async getDataset(datasetId: number): Promise { + return (await UVdatApi.apiClient.get(`datasets/${datasetId}`)).data; + } + + public static async deleteLayer(layerId: number, type: 'vector' | 'raster'): Promise<{ detail: string }> { + return (await UVdatApi.apiClient.delete(`/${type}s/${layerId}/`)).data; + } + + public static async deleteFileItem(fileItemId: number): Promise<{ detail: string }> { + return (await UVdatApi.apiClient.delete(`/files/${fileItemId}/`)).data; + } + + public static async getGlobalDatasets(filter: { unconnected: boolean }): Promise<(Dataset & { contextCount: number })[]> { + return (await UVdatApi.apiClient.get('datasets', { params: { ...filter } })).data.results; + } + + public static async getDatasetNetwork( + datasetId: number, + ): Promise { + return (await UVdatApi.apiClient.get(`datasets/${datasetId}/network`)).data; + } + + public static async getNetworkGCC( + datasetId: number, + contextId: number, + exclude_nodes: number[], + ): Promise { + return ( + await UVdatApi.apiClient.get( + `datasets/${datasetId}/gcc?context=${contextId}&exclude_nodes=${exclude_nodes.toString()}`, + ) + ).data; + } + + public static async getMapLayer( + mapLayerId: number, + mapLayerType: string, + ): Promise { + return (await UVdatApi.apiClient.get(`${mapLayerType}s/${mapLayerId}`)).data; + } + + public static async getRasterData(layerId: number): Promise { + const resolution = 0.1; + const { data } = await UVdatApi.apiClient.get(`rasters/${layerId}/raster-data/${resolution}`); + const { sourceBounds } = ( + await UVdatApi.apiClient.get(`rasters/${layerId}/info/metadata`) + ).data; + return { + data, + sourceBounds, + }; + } + + public static async clearChart(chartId: number) { + await UVdatApi.apiClient.post(`charts/${chartId}/clear/`); + } + + public static async runSimulation( + simulationId: number, + contextId: number, + args: object, + ) { + return ( + await UVdatApi.apiClient.post( + `simulations/run/${simulationId}/context/${contextId}/`, + args, + ) + ).data; + } + + public static async getSimulationResults( + simulationId: number, + contextId: number, + ) { + return ( + await UVdatApi.apiClient.get( + `simulations/${simulationId}/context/${contextId}/results/`, + ) + ).data; + } + + public static async getDerivedRegion(regionId: number) { + const res = await UVdatApi.apiClient.get(`derived-regions/${regionId}/`); + return res.data; + } + + public static async postDerivedRegion( + name: string, + context: number, + regions: number[], + op: 'union' | 'intersection' | undefined, + ) { + if (!op) return; + const operation = op.toUpperCase(); + const res = await UVdatApi.apiClient.post('derived-regions/', { + name, + context, + operation, + regions, + }); + + // eslint-disable-next-line consistent-return + return res.data; + } + + public static async patchVectorLayer(layerId: number, default_style: VectorMapLayer['default_style']) { + const res = await UVdatApi.apiClient.patch(`vectors/${layerId}/`, { default_style }); + return res.data; + } + + public static async patchRasterLayer(layerId: number, default_style: RasterMapLayer['default_style']) { + const res = await UVdatApi.apiClient.patch(`rasters/${layerId}/`, { default_style }); + return res.data; + } + + public static async getLayerPropertySummary(layerId: number): Promise { + return (await UVdatApi.apiClient.get(`vectors/${layerId}/property-summary`)).data; + } + + public static async getRasterMetadata(layerId: number): Promise { + return (await UVdatApi.apiClient.get(`/rasters/${layerId}/info/metadata/`)).data; + } + + public static async getLayerRepresentations(mapLayerId: number, type: 'vector' | 'raster'): Promise { + return (await UVdatApi.apiClient.get(`/layer-representations/map-layer/${mapLayerId}/`, { params: { type } })).data; + } + + public static async addLayerRepresentation(layerRepresentation: LayerRepresentation) { + return (await UVdatApi.apiClient.post('/layer-representations/', { ...layerRepresentation })).data; + } + + public static async patchLayerRepresentation(layerRepresentationId: number, layerRepresentation: LayerRepresentation) { + return (await UVdatApi.apiClient.patch(`/layer-representations/${layerRepresentationId}/`, { ...layerRepresentation })).data; + } + + public static async deleteLayerRepresentation(layerRepresentationId: number) { + return (await UVdatApi.apiClient.delete(`/layer-representations/${layerRepresentationId}/`)).data; + } + + public static async getLayerCollections(): Promise { + return (await UVdatApi.apiClient.get('/layer-collections/')).data.results; + } + + public static async addLayerCollection(layerCollection: LayerCollection) { + return (await UVdatApi.apiClient.post('/layer-collections/', { ...layerCollection })).data; + } + + public static async patchLayerCollection(layerCollectionId: number, layerCollection: LayerCollection) { + return (await UVdatApi.apiClient.patch(`/layer-collections/${layerCollectionId}/`, { ...layerCollection })).data; + } + + public static async deleteLayerCollection(layerCollectionId: number) { + return (await UVdatApi.apiClient.delete(`/layer-collections/${layerCollectionId}/`)).data; + } + + public static async getMapLayerCollectionList( + layers: LayerCollectionLayer[], + enabled? : boolean, + ): Promise<(VectorMapLayer | RasterMapLayer | NetCDFLayer)[]> { + return (await UVdatApi.apiClient.post('/map-layers/', { layers }, { params: { enabled } })).data; + } + + public static async getRasterBbox(mapLayerId: number): Promise { + return (await UVdatApi.apiClient.get(`/rasters/${mapLayerId}/bbox`)).data; + } + + public static async getVectorBbox(mapLayerId: number): Promise { + return (await UVdatApi.apiClient.get(`/vectors/${mapLayerId}/bbox`)).data; + } + + public static async getMapLayersBoundingBox( + rasterMapLayerIds: number[] = [], + vectorMapLayerIds: number[] = [], + netCDFMapLayerIds: number[] = [], + ): Promise { + // Create query parameters for the request + const params = new URLSearchParams(); + + rasterMapLayerIds.forEach((id) => params.append('rasterMapLayerIds', id.toString())); + vectorMapLayerIds.forEach((id) => params.append('vectorMapLayerIds', id.toString())); + netCDFMapLayerIds.forEach((id) => params.append('netCDFMapLayerIds', id.toString())); + + // Make the request using axios + const response = await UVdatApi.apiClient.get('/map-layers/bbox', { params }); + + // Return the bounding box data from the response + return response.data; + } + + public static async getPropertyStatistics(mapLayerId: number, property_keys: string, bbox?: string, bins?: number) { + return (await UVdatApi.apiClient.get( + `/vectors/${mapLayerId}/property-statistics/`, + { params: { property_keys, bbox, bins } }, + )).data; + } + + public static async deleteDataset(datasetId: number): Promise<{ detail: string }> { + return (await UVdatApi.apiClient.delete(`/datasets/${datasetId}/`)).data; + } + + public static async getNetCDFPreview(data: NetCDFPreviewParams): Promise<{ image: string }> { + return (await UVdatApi.apiClient.post('/netcdf/preview/', { ...data })).data; + } + + public static async getNetCDFLayerImages(layerId: number): Promise { + return (await UVdatApi.apiClient.get(`/netcdf/layer/${layerId}/images/`)).data; + } + + public static async deleteNetCDFLayer(layerId: number): Promise<{ message?: string, error?: string }> { + return (await UVdatApi.apiClient.delete(`/netcdf/layer/${layerId}/delete-layer/`)).data; + } + + public static async generateNetCDFLayer(data: NetCDFGenerateParams): Promise<{ image: string }> { + return (await UVdatApi.apiClient.post('/netcdf/generate-layer/', { ...data })).data; + } + + public static async addDataset(data: AddDatasetParams): Promise { + return (await UVdatApi.apiClient.post('/datasets/', { ...data })).data; + } + + public static async convertDataset(datasetId: number): Promise { + return (await UVdatApi.apiClient.get(`datasets/${datasetId}/convert`)).data; + } + + public static async patchFileItem(itemId: number, data:{ name?: string }) { + return (UVdatApi.apiClient.patch(`files/${itemId}/`, data)); + } + + public static async postFileItem( + name: string, + // eslint-disable-next-line @typescript-eslint/no-explicit-any + metadata: Record, + index: number, + dataset: number, + fileKey: string, + ): Promise<{ detail: string }> { + return (await UVdatApi.apiClient.post('/files/', { + name, metadata, index, dataset, fileKey, + })).data; + } + + public static async getDatasetFiles(datasetId: number): Promise { + return (await UVdatApi.apiClient.get(`/datasets/${datasetId}/file_items`)).data; + } + + public static async getDatasetLayers(datasetId: number): Promise<(VectorMapLayer | RasterMapLayer | NetCDFData)[]> { + return (await UVdatApi.apiClient.get(`/datasets/${datasetId}/map_layers`)).data; + } + + public static async getProcessingTasks(): Promise { + return (await UVdatApi.apiClient.get('/processing-tasks')).data; + } + + public static async getFilteredProcessingTasks( + status: ProcessingTask['status'], + ): Promise { + return (await UVdatApi.apiClient.get('/processing-tasks/filtered/', { params: { status } })).data; + } + + public static async cancelProcessingTask(taskId: number): Promise<{ detail: string }> { + return (await UVdatApi.apiClient.post(`/processing-tasks/${taskId}/cancel/`)).data; + } + + public static async updateMapLayerName(id: number, type: AbstractMapLayer['type'], name: string) { + return (await UVdatApi.apiClient.patch('/map-layers/update-name/', { name, type, id })).data; + } + + public static async updateFileItem(id: number, name: string) { + return (await UVdatApi.apiClient.patch(`files/${id}/`, { name })).data; + } + + public static async updateDataset(id: number, name: string, category: string, description: string) { + return (await UVdatApi.apiClient.patch(`/datasets/${id}/`, { name, category, description })).data; + } + + public static async addContext( + data:{ name?: string, datasets: number[], default_map_zoom: number, default_map_center: number[] }, + ) { + return (await (UVdatApi.apiClient.post('contexts/', data))).data; + } + + public static async patchContext( + itemId: number, + data:{ name?: string, datasets: number[], default_map_zoom?: number, default_map_center?: number[] }, + ) { + return (UVdatApi.apiClient.patch( + `contexts/${itemId}/all/`, + { + ...data, + default_map_zoom: data.default_map_zoom ? Math.round(data.default_map_zoom) : undefined, + }, + )); + } + + public static async deleteContext(contextId: number): Promise<{ detail: string }> { + return (await UVdatApi.apiClient.delete(`/contexts/${contextId}/`)).data; + } +} diff --git a/client/src/assets/basic-map-styles.json b/client/src/assets/basic-map-styles.json new file mode 100644 index 0000000..175b20e --- /dev/null +++ b/client/src/assets/basic-map-styles.json @@ -0,0 +1,815 @@ +{ + "version": 8, + "name": "Basic", + "metadata": { + "mapbox:autocomposite": false, + "mapbox:type": "template", + "maputnik:renderer": "mbgljs", + "openmaptiles:version": "3.x", + "openmaptiles:mapbox:owner": "openmaptiles", + "openmaptiles:mapbox:source:url": "mapbox://openmaptiles.4qljc88t" + }, + "sources": { + "openmaptiles": { + "type": "vector", + "url": "https://api.maptiler.com/tiles/v3-openmaptiles/tiles.json?key={key}" + } + }, + "sprite": "https://openmaptiles.github.io/maptiler-basic-gl-style/sprite", + "glyphs": "https://api.maptiler.com/fonts/{fontstack}/{range}.pbf?key={key}", + "layers": [ + { + "id": "background", + "type": "background", + "paint": {"background-color": "hsl(47, 26%, 88%)"} + }, + { + "id": "landuse-residential", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landuse", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["in", "class", "residential", "suburb", "neighbourhood"] + ], + "layout": {"visibility": "visible"}, + "paint": {"fill-color": "hsl(47, 13%, 86%)", "fill-opacity": 0.7} + }, + { + "id": "landcover_grass", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "grass"], + "paint": {"fill-color": "hsl(82, 46%, 72%)", "fill-opacity": 0.45} + }, + { + "id": "landcover_wood", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "wood"], + "paint": { + "fill-color": "hsl(82, 46%, 72%)", + "fill-opacity": {"base": 1, "stops": [[8, 0.6], [22, 1]]} + } + }, + { + "id": "water", + "type": "fill", + "source": "openmaptiles", + "source-layer": "water", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["!=", "intermittent", 1], + ["!=", "brunnel", "tunnel"] + ], + "layout": {"visibility": "visible"}, + "paint": {"fill-color": "hsl(205, 56%, 73%)"} + }, + { + "id": "water_intermittent", + "type": "fill", + "source": "openmaptiles", + "source-layer": "water", + "filter": ["all", ["==", "$type", "Polygon"], ["==", "intermittent", 1]], + "layout": {"visibility": "visible"}, + "paint": {"fill-color": "hsl(205, 56%, 73%)", "fill-opacity": 0.7} + }, + { + "id": "landcover-ice-shelf", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "subclass", "ice_shelf"], + "layout": {"visibility": "visible"}, + "paint": {"fill-color": "hsl(47, 26%, 88%)", "fill-opacity": 0.8} + }, + { + "id": "landcover-glacier", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "subclass", "glacier"], + "layout": {"visibility": "visible"}, + "paint": { + "fill-color": "hsl(47, 22%, 94%)", + "fill-opacity": {"base": 1, "stops": [[0, 1], [8, 0.5]]} + } + }, + { + "id": "landcover_sand", + "type": "fill", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["all", ["in", "class", "sand"]], + "paint": { + "fill-antialias": false, + "fill-color": "rgba(232, 214, 38, 1)", + "fill-opacity": 0.3 + } + }, + { + "id": "landuse", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landuse", + "filter": ["==", "class", "agriculture"], + "layout": {"visibility": "visible"}, + "paint": {"fill-color": "#eae0d0"} + }, + { + "id": "landuse_overlay_national_park", + "type": "fill", + "source": "openmaptiles", + "source-layer": "landcover", + "filter": ["==", "class", "national_park"], + "paint": { + "fill-color": "#E1EBB0", + "fill-opacity": {"base": 1, "stops": [[5, 0], [9, 0.75]]} + } + }, + { + "id": "waterway-tunnel", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "tunnel"] + ], + "layout": {"visibility": "visible"}, + "paint": { + "line-color": "hsl(205, 56%, 73%)", + "line-dasharray": [3, 3], + "line-gap-width": {"stops": [[12, 0], [20, 6]]}, + "line-opacity": 1, + "line-width": {"base": 1.4, "stops": [[8, 1], [20, 2]]} + } + }, + { + "id": "waterway", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["!in", "brunnel", "tunnel", "bridge"], + ["!=", "intermittent", 1] + ], + "layout": {"visibility": "visible"}, + "paint": { + "line-color": "hsl(205, 56%, 73%)", + "line-opacity": 1, + "line-width": {"base": 1.4, "stops": [[8, 1], [20, 8]]} + } + }, + { + "id": "waterway_intermittent", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["!in", "brunnel", "tunnel", "bridge"], + ["==", "intermittent", 1] + ], + "layout": {"visibility": "visible"}, + "paint": { + "line-color": "hsl(205, 56%, 73%)", + "line-dasharray": [2, 1], + "line-opacity": 1, + "line-width": {"base": 1.4, "stops": [[8, 1], [20, 8]]} + } + }, + { + "id": "tunnel_railway_transit", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 0, + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "tunnel"], + ["==", "class", "transit"] + ], + "layout": {"line-cap": "butt", "line-join": "miter"}, + "paint": { + "line-color": "hsl(34, 12%, 66%)", + "line-dasharray": [3, 3], + "line-opacity": {"base": 1, "stops": [[11, 0], [16, 1]]} + } + }, + { + "id": "building", + "type": "fill", + "source": "openmaptiles", + "source-layer": "building", + "paint": { + "fill-antialias": true, + "fill-color": "rgba(222, 211, 190, 1)", + "fill-opacity": {"base": 1, "stops": [[13, 0], [15, 1]]}, + "fill-outline-color": { + "stops": [ + [15, "rgba(212, 177, 146, 0)"], + [16, "rgba(212, 177, 146, 0.5)"] + ] + } + } + }, + { + "id": "housenumber", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "housenumber", + "minzoom": 17, + "filter": ["==", "$type", "Point"], + "layout": { + "text-field": "{housenumber}", + "text-font": ["Noto Sans Regular"], + "text-size": 10 + }, + "paint": {"text-color": "rgba(212, 177, 146, 1)"} + }, + { + "id": "road_area_pier", + "type": "fill", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "Polygon"], ["==", "class", "pier"]], + "layout": {"visibility": "visible"}, + "paint": {"fill-antialias": true, "fill-color": "hsl(47, 26%, 88%)"} + }, + { + "id": "road_pier", + "type": "line", + "metadata": {}, + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["all", ["==", "$type", "LineString"], ["in", "class", "pier"]], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "hsl(47, 26%, 88%)", + "line-width": {"base": 1.2, "stops": [[15, 1], [17, 4]]} + } + }, + { + "id": "road_bridge_area", + "type": "fill", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["in", "brunnel", "bridge"] + ], + "layout": {}, + "paint": {"fill-color": "hsl(47, 26%, 88%)", "fill-opacity": 0.5} + }, + { + "id": "road_path", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "path", "track"] + ], + "layout": {"line-cap": "square", "line-join": "bevel"}, + "paint": { + "line-color": "hsl(0, 0%, 97%)", + "line-dasharray": [1, 1], + "line-width": {"base": 1.55, "stops": [[4, 0.25], [20, 10]]} + } + }, + { + "id": "road_minor", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "minzoom": 13, + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "minor", "service"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "hsl(0, 0%, 97%)", + "line-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]} + } + }, + { + "id": "tunnel_minor", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "tunnel"], + ["==", "class", "minor_road"] + ], + "layout": {"line-cap": "butt", "line-join": "miter"}, + "paint": { + "line-color": "#efefef", + "line-dasharray": [0.36, 0.18], + "line-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]} + } + }, + { + "id": "tunnel_major", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "tunnel"], + ["in", "class", "primary", "secondary", "tertiary", "trunk"] + ], + "layout": {"line-cap": "butt", "line-join": "miter"}, + "paint": { + "line-color": "#fff", + "line-dasharray": [0.28, 0.14], + "line-width": {"base": 1.4, "stops": [[6, 0.5], [20, 30]]} + } + }, + { + "id": "aeroway-area", + "type": "fill", + "metadata": {"mapbox:group": "1444849345966.4436"}, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["==", "$type", "Polygon"], + ["in", "class", "runway", "taxiway"] + ], + "layout": {"visibility": "visible"}, + "paint": { + "fill-color": "rgba(255, 255, 255, 1)", + "fill-opacity": {"base": 1, "stops": [[13, 0], [14, 1]]} + } + }, + { + "id": "aeroway-taxiway", + "type": "line", + "metadata": {"mapbox:group": "1444849345966.4436"}, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 12, + "filter": [ + "all", + ["in", "class", "taxiway"], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": 1, + "line-width": {"base": 1.5, "stops": [[12, 1], [17, 10]]} + } + }, + { + "id": "aeroway-runway", + "type": "line", + "metadata": {"mapbox:group": "1444849345966.4436"}, + "source": "openmaptiles", + "source-layer": "aeroway", + "minzoom": 4, + "filter": [ + "all", + ["in", "class", "runway"], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "rgba(255, 255, 255, 1)", + "line-opacity": 1, + "line-width": {"base": 1.5, "stops": [[11, 4], [17, 50]]} + } + }, + { + "id": "road_trunk_primary", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "trunk", "primary"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "#fff", + "line-width": {"base": 1.4, "stops": [[6, 0.5], [20, 30]]} + } + }, + { + "id": "road_secondary_tertiary", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["in", "class", "secondary", "tertiary"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "#fff", + "line-width": {"base": 1.4, "stops": [[6, 0.5], [20, 20]]} + } + }, + { + "id": "road_major_motorway", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "class", "motorway"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "hsl(0, 0%, 100%)", + "line-offset": 0, + "line-width": {"base": 1.4, "stops": [[8, 1], [16, 10]]} + } + }, + { + "id": "railway-transit", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "class", "transit"], + ["!=", "brunnel", "tunnel"] + ], + "layout": {"visibility": "visible"}, + "paint": { + "line-color": "hsl(34, 12%, 66%)", + "line-opacity": {"base": 1, "stops": [[11, 0], [16, 1]]} + } + }, + { + "id": "railway", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": ["==", "class", "rail"], + "layout": {"visibility": "visible"}, + "paint": { + "line-color": "hsl(34, 12%, 66%)", + "line-opacity": {"base": 1, "stops": [[11, 0], [16, 1]]} + } + }, + { + "id": "waterway-bridge-case", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "bridge"] + ], + "layout": {"line-cap": "butt", "line-join": "miter"}, + "paint": { + "line-color": "#bbbbbb", + "line-gap-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]}, + "line-width": {"base": 1.6, "stops": [[12, 0.5], [20, 10]]} + } + }, + { + "id": "waterway-bridge", + "type": "line", + "source": "openmaptiles", + "source-layer": "waterway", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "bridge"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "hsl(205, 56%, 73%)", + "line-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]} + } + }, + { + "id": "bridge_minor case", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "bridge"], + ["==", "class", "minor_road"] + ], + "layout": {"line-cap": "butt", "line-join": "miter"}, + "paint": { + "line-color": "#dedede", + "line-gap-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]}, + "line-width": {"base": 1.6, "stops": [[12, 0.5], [20, 10]]} + } + }, + { + "id": "bridge_major case", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "secondary", "tertiary", "trunk"] + ], + "layout": {"line-cap": "butt", "line-join": "miter"}, + "paint": { + "line-color": "#dedede", + "line-gap-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]}, + "line-width": {"base": 1.6, "stops": [[12, 0.5], [20, 10]]} + } + }, + { + "id": "bridge_minor", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "bridge"], + ["==", "class", "minor_road"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "#efefef", + "line-width": {"base": 1.55, "stops": [[4, 0.25], [20, 30]]} + } + }, + { + "id": "bridge_major", + "type": "line", + "source": "openmaptiles", + "source-layer": "transportation", + "filter": [ + "all", + ["==", "$type", "LineString"], + ["==", "brunnel", "bridge"], + ["in", "class", "primary", "secondary", "tertiary", "trunk"] + ], + "layout": {"line-cap": "round", "line-join": "round"}, + "paint": { + "line-color": "#fff", + "line-width": {"base": 1.4, "stops": [[6, 0.5], [20, 30]]} + } + }, + { + "id": "admin_sub", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "filter": ["in", "admin_level", 4, 6, 8], + "layout": {"visibility": "visible"}, + "paint": {"line-color": "hsla(0, 0%, 60%, 0.5)", "line-dasharray": [2, 1]} + }, + { + "id": "admin_country_z0-4", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "minzoom": 0, + "maxzoom": 5, + "filter": [ + "all", + ["<=", "admin_level", 2], + ["==", "$type", "LineString"], + ["!has", "claimed_by"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "hsl(0, 0%, 60%)", + "line-width": {"base": 1.3, "stops": [[3, 0.5], [22, 15]]} + } + }, + { + "id": "admin_country_z5-", + "type": "line", + "source": "openmaptiles", + "source-layer": "boundary", + "minzoom": 5, + "filter": [ + "all", + ["<=", "admin_level", 2], + ["==", "$type", "LineString"] + ], + "layout": { + "line-cap": "round", + "line-join": "round", + "visibility": "visible" + }, + "paint": { + "line-color": "hsl(0, 0%, 60%)", + "line-width": {"base": 1.3, "stops": [[3, 0.5], [22, 15]]} + } + }, + { + "id": "poi_label", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "poi", + "minzoom": 14, + "filter": ["all", ["==", "$type", "Point"], ["==", "rank", 1]], + "layout": { + "icon-size": 1, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-offset": [0, 0.5], + "text-size": 11, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.75)", + "text-halo-width": 1 + } + }, + { + "id": "airport-label", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "aerodrome_label", + "minzoom": 10, + "filter": ["all", ["has", "iata"]], + "layout": { + "icon-size": 1, + "text-anchor": "top", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 8, + "text-offset": [0, 0.5], + "text-size": 11, + "visibility": "visible" + }, + "paint": { + "text-color": "#666", + "text-halo-blur": 1, + "text-halo-color": "rgba(255,255,255,0.75)", + "text-halo-width": 1 + } + }, + { + "id": "road_major_label", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "transportation_name", + "minzoom": 13, + "filter": ["==", "$type", "LineString"], + "layout": { + "symbol-placement": "line", + "text-field": "{name:latin} {name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-letter-spacing": 0.1, + "text-rotation-alignment": "map", + "text-size": {"base": 1.4, "stops": [[10, 8], [20, 14]]}, + "text-transform": "uppercase", + "visibility": "visible" + }, + "paint": { + "text-color": "#000", + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 2 + } + }, + { + "id": "place_label_other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "place", + "minzoom": 8, + "filter": [ + "all", + ["==", "$type", "Point"], + ["!in", "class", "city", "state", "country", "continent"] + ], + "layout": { + "text-anchor": "center", + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 6, + "text-size": {"stops": [[6, 10], [12, 14]]}, + "visibility": "visible" + }, + "paint": { + "text-color": "hsl(0, 0%, 25%)", + "text-halo-blur": 0, + "text-halo-color": "hsl(0, 0%, 100%)", + "text-halo-width": 2 + } + }, + { + "id": "place_label_city", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 16, + "filter": ["all", ["==", "$type", "Point"], ["==", "class", "city"]], + "layout": { + "text-field": "{name:latin}\n{name:nonlatin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 10, + "text-size": {"stops": [[3, 12], [8, 16]]} + }, + "paint": { + "text-color": "hsl(0, 0%, 0%)", + "text-halo-blur": 0, + "text-halo-color": "hsla(0, 0%, 100%, 0.75)", + "text-halo-width": 2 + } + }, + { + "id": "country_label-other", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 12, + "filter": [ + "all", + ["==", "$type", "Point"], + ["==", "class", "country"], + ["!has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Regular"], + "text-max-width": 10, + "text-size": {"stops": [[3, 12], [8, 22]]}, + "visibility": "visible" + }, + "paint": { + "text-color": "hsl(0, 0%, 13%)", + "text-halo-blur": 0, + "text-halo-color": "rgba(255,255,255,0.75)", + "text-halo-width": 2 + } + }, + { + "id": "country_label", + "type": "symbol", + "source": "openmaptiles", + "source-layer": "place", + "maxzoom": 12, + "filter": [ + "all", + ["==", "$type", "Point"], + ["==", "class", "country"], + ["has", "iso_a2"] + ], + "layout": { + "text-field": "{name:latin}", + "text-font": ["Noto Sans Bold"], + "text-max-width": 10, + "text-size": {"stops": [[3, 12], [8, 22]]}, + "visibility": "visible" + }, + "paint": { + "text-color": "hsl(0, 0%, 13%)", + "text-halo-blur": 0, + "text-halo-color": "rgba(255,255,255,0.75)", + "text-halo-width": 2 + } + } + ], + "id": "basic" +} \ No newline at end of file diff --git a/client/src/assets/tva.geojson b/client/src/assets/tva.geojson new file mode 100644 index 0000000..b849e60 --- /dev/null +++ b/client/src/assets/tva.geojson @@ -0,0 +1,8 @@ +{ +"type": "FeatureCollection", +"name": "tva", +"crs": { "type": "name", "properties": { "name": "urn:ogc:def:crs:OGC:1.3:CRS84" } }, +"features": [ +{ "type": "Feature", "properties": { }, "geometry": { "type": "MultiPolygon", "coordinates": [ [ [ [ -89.993330715139521, 32.323034344554927 ], [ -89.995394594504788, 32.399274648537038 ], [ -90.00034206593206, 32.399346703991803 ], [ -90.021769131246529, 32.39954390810027 ], [ -90.024017165245041, 32.429557521045467 ], [ -90.000386981696266, 32.463938329657694 ], [ -89.98564338209566, 32.484123667241491 ], [ -89.961433785188646, 32.491394130038792 ], [ -89.953290557138089, 32.500116773440446 ], [ -89.887890958665992, 32.561161049187916 ], [ -89.869244179155871, 32.560914986225626 ], [ -89.861181799480903, 32.584155493070611 ], [ -89.847877750123104, 32.582348324353447 ], [ -89.839166337655342, 32.592795337601842 ], [ -89.837095720925447, 32.585213284872388 ], [ -89.832869147513662, 32.589828441520311 ], [ -89.833107201063967, 32.587031749296578 ], [ -89.828402274763377, 32.585883150148639 ], [ -89.816376078897235, 32.586649515299762 ], [ -89.818219871017888, 32.584274708155377 ], [ -89.813878762407384, 32.581680325019867 ], [ -89.812901844535901, 32.586197266040031 ], [ -89.807943144167552, 32.584155493070611 ], [ -89.806535034959708, 32.586571932952921 ], [ -89.80938044862215, 32.591103764754294 ], [ -89.803312328877922, 32.589209695074985 ], [ -89.797762986210273, 32.589919266327051 ], [ -89.796316698602851, 32.584208477572304 ], [ -89.79188575846392, 32.587953267131596 ], [ -89.794605407986595, 32.593380001328704 ], [ -89.79078083066446, 32.590939146899935 ], [ -89.786751886615178, 32.591796291726432 ], [ -89.789747768087722, 32.585796105791196 ], [ -89.786686758757085, 32.583669169574421 ], [ -89.780762369458316, 32.589578672827145 ], [ -89.783093497620598, 32.596725188394203 ], [ -89.770213902234545, 32.598846138802593 ], [ -89.766261314984419, 32.601877061965482 ], [ -89.772230620047381, 32.604690317730807 ], [ -89.767235987067679, 32.609011245968333 ], [ -89.762477161850057, 32.605318416569546 ], [ -89.758973732241998, 32.612145869474105 ], [ -89.756267557448581, 32.617503040782289 ], [ -89.741925953937624, 32.625332030610743 ], [ -89.739105243945488, 32.630368778999291 ], [ -89.734999943097066, 32.629530916741373 ], [ -89.736152032448942, 32.633069554727207 ], [ -89.729461829370464, 32.63406246648627 ], [ -89.729230513184802, 32.640153975354806 ], [ -89.725192585982668, 32.64064188330147 ], [ -89.724736690975988, 32.64353145410567 ], [ -89.715342558892303, 32.645343061488902 ], [ -89.716842745416798, 32.643431228408893 ], [ -89.713081050164533, 32.636799063383926 ], [ -89.701308628366149, 32.641742503082689 ], [ -89.698921355498598, 32.646957970746115 ], [ -89.701548927704664, 32.649272497098437 ], [ -89.693879560966479, 32.650062901689353 ], [ -89.696165773364569, 32.655884829318204 ], [ -89.691512500192829, 32.654546140972037 ], [ -89.686623419259007, 32.659229571764868 ], [ -89.684878441819606, 32.655831887221936 ], [ -89.679558169549409, 32.658115932015583 ], [ -89.681635523643934, 32.659588807434055 ], [ -89.678212942411449, 32.664491284657757 ], [ -89.676236648786372, 32.672907868608391 ], [ -89.678675574782758, 32.680512738631073 ], [ -89.67769416533487, 32.682902004836905 ], [ -89.674792606967159, 32.683151513127996 ], [ -89.669625048295245, 32.698048918777133 ], [ -89.67336653145361, 32.700105102273653 ], [ -89.669333095827923, 32.709247741596144 ], [ -89.67070302663619, 32.715785722643986 ], [ -89.675261976703098, 32.718293081303628 ], [ -89.680692292595609, 32.728920702843602 ], [ -89.678491420149513, 32.739286372843019 ], [ -89.680993228215797, 32.744945704954183 ], [ -89.679502024844155, 32.758327575132725 ], [ -89.682307014318823, 32.761625042675291 ], [ -89.679897283569176, 32.767619095292417 ], [ -89.683932964983072, 32.77164134286928 ], [ -89.675637023334232, 32.78379195852721 ], [ -89.676690298004857, 32.791157048378693 ], [ -89.673930224294395, 32.794817654394095 ], [ -89.676362412926153, 32.798736733410301 ], [ -89.671430662016348, 32.810655259824046 ], [ -89.662023055203392, 32.829086753878428 ], [ -89.664053247745514, 32.833400597931465 ], [ -89.658737467051722, 32.837308540809943 ], [ -89.6702650979352, 32.837451948285761 ], [ -89.664904401477202, 32.855464726506007 ], [ -89.73072845392106, 32.854959128057146 ], [ -89.73035340728994, 32.929503755605282 ], [ -89.679654738442451, 32.929647013968818 ], [ -89.679800714676119, 32.95888194335226 ], [ -89.649637533223597, 32.958946011357298 ], [ -89.64937926757942, 32.973761432053102 ], [ -89.645327865648042, 32.974157078813889 ], [ -89.645640030209265, 32.988943576234128 ], [ -89.637523751617252, 32.988911553116331 ], [ -89.638094181822666, 32.999947538430085 ], [ -89.638469228453786, 33.010692123737194 ], [ -89.62797915172348, 33.010950128361387 ], [ -89.628024067487686, 33.029004810497398 ], [ -89.621589884265177, 33.029012341925238 ], [ -89.62116992186985, 33.039211187414978 ], [ -89.59322782495731, 33.039572653353112 ], [ -89.593535497942113, 33.036547213014259 ], [ -89.576139622465149, 33.036053945311629 ], [ -89.57626763239314, 33.030531794328716 ], [ -89.569759338159685, 33.027329051799356 ], [ -89.569788533406424, 33.019058998487445 ], [ -89.559267015641169, 33.019151268844681 ], [ -89.559518543920717, 33.002377191070359 ], [ -89.554721540303532, 33.002330105414693 ], [ -89.554950610700971, 32.999762957432807 ], [ -89.554198271650534, 32.983810310497198 ], [ -89.560443808663365, 32.984686283387909 ], [ -89.558602262330922, 32.974051573184312 ], [ -89.550326532775969, 32.974174035064024 ], [ -89.549634830007207, 32.951902021344878 ], [ -89.525492606746482, 32.952354300811841 ], [ -89.525454428346904, 32.948027399081077 ], [ -89.499645830234158, 32.94784647871635 ], [ -89.4998524427495, 32.924008868286812 ], [ -89.473909097344148, 32.922973943944839 ], [ -89.473729434287307, 32.911070501381921 ], [ -89.455718212840722, 32.911151572369242 ], [ -89.455684526017549, 32.896887592383685 ], [ -89.438737808182651, 32.897166671792938 ], [ -89.438751282911909, 32.909439639008397 ], [ -89.42288928078257, 32.90948111796132 ], [ -89.422750041913531, 32.923518741691971 ], [ -89.405333954342666, 32.923750609611744 ], [ -89.405603448927891, 32.945524634503904 ], [ -89.422835381865525, 32.945545365525589 ], [ -89.423057714898334, 32.960381876224872 ], [ -89.4391195921784, 32.960221708727836 ], [ -89.439398069916479, 32.974967207126937 ], [ -89.448630505249014, 32.975027495448479 ], [ -89.449045976067922, 32.996365091319397 ], [ -89.439321713117323, 32.996466803180439 ], [ -89.438964632791894, 32.999751656542877 ], [ -89.439775362335794, 33.004010106060498 ], [ -89.422851102382992, 33.003838717325571 ], [ -89.422994832828451, 32.999804394016834 ], [ -89.423089155933283, 32.989299597172952 ], [ -89.411487414038888, 32.989431456415488 ], [ -89.40913607378269, 32.980950622365405 ], [ -89.388681434763299, 32.98064731667602 ], [ -89.388497280130053, 32.989005738723748 ], [ -89.388465839095105, 32.999889150605355 ], [ -89.388468084883314, 33.019710538127029 ], [ -89.406187353862578, 33.019450676073454 ], [ -89.405956037676916, 33.034711565404379 ], [ -89.449847722458998, 33.034291714474648 ], [ -89.450097004950337, 33.067950628951031 ], [ -89.406135700733742, 33.068534054626589 ], [ -89.405958283465125, 33.077951139055095 ], [ -89.317934614562475, 33.078382072635854 ], [ -89.317577534237032, 33.108310793864952 ], [ -89.317323760169273, 33.197748268695854 ], [ -89.316602862153758, 33.284826649536924 ], [ -89.453833996532268, 33.285294114106868 ], [ -89.453607171923039, 33.299547765020634 ], [ -89.436408925808564, 33.299724208110881 ], [ -89.436783972439684, 33.314478467720832 ], [ -89.419145551835996, 33.314906362179052 ], [ -89.418968134567393, 33.329250871240667 ], [ -89.443177731474407, 33.329027577378753 ], [ -89.442607301268993, 33.346009412184003 ], [ -89.454072050082573, 33.345876212134257 ], [ -89.45395751488384, 33.365626991022893 ], [ -89.436824396627472, 33.365596980892704 ], [ -89.436826642415681, 33.376480601029492 ], [ -89.428613794930627, 33.376234923438965 ], [ -89.428252223028764, 33.396788798270009 ], [ -89.380919990708506, 33.397130040460802 ], [ -89.380502274101389, 33.419975218813491 ], [ -89.377544571028423, 33.419937729597947 ], [ -89.377218931737929, 33.451559751863499 ], [ -89.381602710324429, 33.451363004925952 ], [ -89.381398343597297, 33.46096373486521 ], [ -89.369383376672189, 33.463523000566838 ], [ -89.362493298442999, 33.473373407431907 ], [ -89.354255747287624, 33.469180845430337 ], [ -89.349434040000119, 33.469446867455247 ], [ -89.349526117316728, 33.499878516264552 ], [ -89.349283572190032, 33.503844875104527 ], [ -89.369475453988827, 33.50383738451314 ], [ -89.369531598694081, 33.510528096918371 ], [ -89.37794207554164, 33.510361443977345 ], [ -89.377982499729441, 33.518381018750716 ], [ -89.384692914901805, 33.518131998076989 ], [ -89.384767025912737, 33.523380003933553 ], [ -89.397424288265995, 33.523183420086148 ], [ -89.397123352645806, 33.532559035897876 ], [ -89.402710873713033, 33.532246406946335 ], [ -89.40237849705791, 33.537909121415275 ], [ -89.436810921898214, 33.539264373930862 ], [ -89.437352156856889, 33.56196730859304 ], [ -89.454505487207143, 33.561346005125245 ], [ -89.454348282032427, 33.605297805782023 ], [ -89.472065305223481, 33.605172485555677 ], [ -89.472489759195227, 33.64868318765852 ], [ -89.43783050974568, 33.648419586620903 ], [ -89.437529574125506, 33.663064111449337 ], [ -89.446804679434038, 33.663022989135236 ], [ -89.446557642730909, 33.677483747163855 ], [ -89.454961382213838, 33.677745390287221 ], [ -89.455098375294668, 33.691998130634005 ], [ -89.465089887042296, 33.691882279416511 ], [ -89.464764247751788, 33.706411045744595 ], [ -89.472013652094645, 33.706336315579257 ], [ -89.472067551011691, 33.714655251934118 ], [ -89.497606654539211, 33.714608550072001 ], [ -89.497952505923593, 33.732614904405636 ], [ -89.49570671771329, 33.735976668217901 ], [ -89.489914829918945, 33.736178369857946 ], [ -89.489926058859993, 33.750934919803285 ], [ -89.497451695152705, 33.750811678951372 ], [ -89.501327925603675, 33.764531405809393 ], [ -89.503762360023643, 33.768705889641154 ], [ -89.504067787220237, 33.771844086377619 ], [ -89.507398291136113, 33.772277189572037 ], [ -89.507124304974454, 33.775142709422319 ], [ -89.524892981294329, 33.789627518556372 ], [ -89.538632713564951, 33.794724617915683 ], [ -89.664385624400623, 33.799903527396694 ], [ -89.694416304348749, 33.809857351180561 ], [ -89.711378742701129, 33.841086625292988 ], [ -89.757859821289685, 33.843739067402126 ], [ -89.767262936526208, 33.855340202247248 ], [ -89.769699616734385, 33.86677752774392 ], [ -89.769598556264924, 33.873042883981618 ], [ -89.797015138736242, 33.873538871706174 ], [ -89.796929798784262, 33.83812071699888 ], [ -89.804448697712331, 33.838245697601792 ], [ -89.804980949518182, 33.834380541251768 ], [ -89.814426734730702, 33.834483141772211 ], [ -89.81094127142832, 33.823965014972494 ], [ -89.835404642403105, 33.82385680474431 ], [ -89.835180063582058, 33.829574968006064 ], [ -89.838405015452054, 33.829683170997569 ], [ -89.838184928207454, 33.837992005440668 ], [ -89.828974950757001, 33.838322178179105 ], [ -89.828552742573478, 33.845535294729274 ], [ -89.822605895392599, 33.845511046844415 ], [ -89.822587929086922, 33.874944776133134 ], [ -89.84927013881348, 33.874070283926898 ], [ -89.849110687850555, 33.867627853060135 ], [ -89.845816116546033, 33.867131830988299 ], [ -89.846532522985115, 33.835710607539326 ], [ -89.85379315626902, 33.835585623229292 ], [ -89.853975065114057, 33.859118624006761 ], [ -89.857498706816017, 33.85912794863156 ], [ -89.857341501641287, 33.867618529363554 ], [ -89.885483473704554, 33.867667012574636 ], [ -89.884445919551382, 33.793662669476575 ], [ -89.996378249740886, 33.793509628369442 ], [ -89.995765149559475, 33.823965014972494 ], [ -89.999922103536747, 33.823672100762614 ], [ -90.023235630947866, 33.823925835422926 ], [ -90.022977365303674, 33.809879743179543 ], [ -90.041365879169604, 33.81007940491132 ], [ -90.115548755332185, 33.810760490490601 ], [ -90.136506450910687, 33.809353529654196 ], [ -90.13676022497846, 33.768403451759895 ], [ -90.15664667958066, 33.768213027361099 ], [ -90.145294220177604, 33.777481723955859 ], [ -90.150174317958573, 33.78648437377975 ], [ -90.154046056833124, 33.786465708679934 ], [ -90.153944996363663, 33.790889223553876 ], [ -90.159112555035563, 33.791068399087266 ], [ -90.15939777013827, 33.809124009975193 ], [ -90.167010992171186, 33.809314343411117 ], [ -90.16674374337417, 33.82361426408027 ], [ -90.171718164259971, 33.823634786778477 ], [ -90.171785537906274, 33.838297928247364 ], [ -90.188667127883093, 33.83850685051047 ], [ -90.188539117955116, 33.852578081370886 ], [ -90.206467245237931, 33.852708636023038 ], [ -90.206177538558791, 33.838297928247364 ], [ -90.223687949234503, 33.838407985574626 ], [ -90.223699178175551, 33.830250301678547 ], [ -90.24984239873163, 33.830604756443634 ], [ -90.249197857515284, 33.853109624064139 ], [ -90.232864239861769, 33.852768318083271 ], [ -90.232612711582235, 33.867594287747686 ], [ -90.222079964875917, 33.867631582538486 ], [ -90.222432553624941, 33.897713845641086 ], [ -90.227220574089287, 33.897732486456867 ], [ -90.227429432392853, 33.91161689799614 ], [ -90.26179448358684, 33.911713814386729 ], [ -90.263002717643985, 33.914410655129679 ], [ -90.268408329866176, 33.912910349975519 ], [ -90.270932595814543, 33.909275960929023 ], [ -90.275309637036429, 33.909523849824559 ], [ -90.272740455323842, 33.905667511621957 ], [ -90.276454989023676, 33.902826868664576 ], [ -90.276472955329353, 33.890477173129668 ], [ -90.290421545903513, 33.890781043702319 ], [ -90.290596717383934, 33.894468417502615 ], [ -90.293922729723391, 33.894309964373804 ], [ -90.294129342238733, 33.901251799463786 ], [ -90.296720981833417, 33.899126807925036 ], [ -90.301167642489801, 33.89811462228235 ], [ -90.305984858200901, 33.898450154765918 ], [ -90.313312865131095, 33.902161428776893 ], [ -90.317225028193448, 33.905688014606334 ], [ -90.318983480362107, 33.91071668856366 ], [ -90.320681296249091, 33.912766841141952 ], [ -90.326742678628676, 33.913462018046737 ], [ -90.32852134289125, 33.915351826868559 ], [ -90.327672434947743, 33.921039637595484 ], [ -90.32607343374201, 33.923479018051317 ], [ -90.325705124475533, 33.933056963902871 ], [ -90.328952534227611, 33.933083050222301 ], [ -90.329368005046518, 33.936150000363803 ], [ -90.338326454217409, 33.942825731636425 ], [ -90.338110858549214, 33.948440914889652 ], [ -90.344554024924562, 33.951354553445142 ], [ -90.346696506877194, 33.953562071222514 ], [ -90.346581971678461, 33.987241500508553 ], [ -90.328961517380463, 33.982157754301895 ], [ -90.328844736393521, 33.999512001150343 ], [ -90.328876177428469, 34.005605629077728 ], [ -90.325709616051952, 34.005946323141778 ], [ -90.325451350407761, 34.013599478196234 ], [ -90.320497141615846, 34.014087201500388 ], [ -90.320463454792687, 34.028267182921212 ], [ -90.328707743312705, 34.028445860142035 ], [ -90.328768379594379, 34.049290813933133 ], [ -90.294479685199533, 34.049817407871465 ], [ -90.294383116306491, 34.072541564259033 ], [ -90.298407568779353, 34.072335076110498 ], [ -90.29856028237765, 34.109651025831489 ], [ -90.27753970472925, 34.109864860704548 ], [ -90.276926604547839, 34.093970808393756 ], [ -90.259526237494441, 34.094299988923105 ], [ -90.259404964931093, 34.086854988680727 ], [ -90.241535228141743, 34.087000063638534 ], [ -90.241896800043605, 34.116411665054656 ], [ -90.246062737173702, 34.116251766185918 ], [ -90.245898794634357, 34.119665355437746 ], [ -90.249514513652926, 34.11978248595711 ], [ -90.24957290414639, 34.126655718187919 ], [ -90.245573155343848, 34.126882523469099 ], [ -90.245393492287036, 34.160260879555594 ], [ -90.242000106301276, 34.160279462782299 ], [ -90.241917012137492, 34.169787963354068 ], [ -90.188137121865466, 34.169819551271964 ], [ -90.188543609531536, 34.165488179975576 ], [ -90.170543617025984, 34.165441724767341 ], [ -90.170469506015039, 34.170114990637607 ], [ -90.160695835723828, 34.170048098796322 ], [ -90.160181550223669, 34.178801189000225 ], [ -90.160938380850538, 34.180127729682333 ], [ -90.164098204862427, 34.178026435004959 ], [ -90.16163232940751, 34.176917242442059 ], [ -90.163359340541248, 34.175304521046826 ], [ -90.16593750540666, 34.176735162537717 ], [ -90.167316419367793, 34.176636690589021 ], [ -90.171475619133261, 34.175241349304976 ], [ -90.169593648613031, 34.178182501130131 ], [ -90.172297577618224, 34.177963265300789 ], [ -90.172973559869519, 34.179793309627811 ], [ -90.176079484964376, 34.177898237614762 ], [ -90.176596016252745, 34.18037111233307 ], [ -90.179030450672698, 34.180976779088105 ], [ -90.179120282201112, 34.188857482000429 ], [ -90.188233690758508, 34.188970801212889 ], [ -90.188328013863341, 34.217583671708439 ], [ -90.164628210880053, 34.217817660983584 ], [ -90.16432278368346, 34.253005218128166 ], [ -90.167415234049045, 34.25287713476478 ], [ -90.166927898007401, 34.264698964441692 ], [ -90.157257533973862, 34.264975511144961 ], [ -90.15686676682526, 34.27892973071868 ], [ -90.162198268036505, 34.281995302927186 ], [ -90.155317172960153, 34.282190144839383 ], [ -90.154843311647795, 34.296006068064386 ], [ -90.186809861033183, 34.296327039545439 ], [ -90.198649656477883, 34.303870443867645 ], [ -90.198413848715788, 34.32526694529961 ], [ -90.241506032895003, 34.325398627726841 ], [ -90.241411709790171, 34.339671035706623 ], [ -90.227362058746536, 34.340162441019594 ], [ -90.227391253993275, 34.346689513921113 ], [ -90.205398250049825, 34.34681003747847 ], [ -90.205674481999694, 34.35331434417084 ], [ -90.201995880911227, 34.353401485104868 ], [ -90.202164315026991, 34.370444139142812 ], [ -90.198153337283401, 34.370579457996534 ], [ -90.197679475971029, 34.390100155680557 ], [ -90.185361327637537, 34.390072356935434 ], [ -90.18542645549563, 34.397837114195681 ], [ -90.197717654370592, 34.397933474199419 ], [ -90.197288708822427, 34.426019536929935 ], [ -90.206622204624438, 34.426130684082935 ], [ -90.207127506971759, 34.439895116395554 ], [ -90.197683967547448, 34.439945124329427 ], [ -90.197984903167637, 34.459416308880975 ], [ -90.189345355922597, 34.459919973410891 ], [ -90.189646291542786, 34.499879397634622 ], [ -90.190086466032014, 34.51062454015355 ], [ -90.19283081922498, 34.51071706895069 ], [ -90.192637681438896, 34.521834581303843 ], [ -90.198539612855569, 34.521899342758417 ], [ -90.198555333373051, 34.536369489587727 ], [ -90.195880599614583, 34.537448035553147 ], [ -90.198366687163372, 34.541033221713278 ], [ -90.20125477080181, 34.541536393379126 ], [ -90.199197628801187, 34.543253073817858 ], [ -90.199536742820939, 34.548234576397704 ], [ -90.208448030439413, 34.547080329782595 ], [ -90.203347845413816, 34.551486358175509 ], [ -90.205171425440582, 34.553034516790675 ], [ -90.203859885125766, 34.558923545117914 ], [ -90.207617088801598, 34.557858224145981 ], [ -90.211396750359526, 34.560767479901621 ], [ -90.217666991042677, 34.559060408281567 ], [ -90.219214339119574, 34.560747135809059 ], [ -90.216249898681994, 34.563160650249188 ], [ -90.211284460949017, 34.562881388942991 ], [ -90.211666244944766, 34.573143163651714 ], [ -90.22435045675654, 34.576388424395056 ], [ -90.22020024014391, 34.579202730282788 ], [ -90.221017707052454, 34.58234236250901 ], [ -90.224440288284939, 34.583231718514647 ], [ -90.225891067468808, 34.586090166294085 ], [ -90.228363680288339, 34.586323127303856 ], [ -90.231631302134318, 34.588177547605611 ], [ -90.230928370424508, 34.591605250456325 ], [ -90.234438537397196, 34.594973653457792 ], [ -90.236235167965432, 34.592363245477301 ], [ -90.240012583735165, 34.592836526666176 ], [ -90.237117762732083, 34.598304947335073 ], [ -90.234211712787953, 34.598765254351569 ], [ -90.233663740464635, 34.601434615029788 ], [ -90.236457500998256, 34.605015194725695 ], [ -90.23743217308153, 34.601149936606738 ], [ -90.241838409550127, 34.59865433723148 ], [ -90.244567042225654, 34.599617462616507 ], [ -90.241647517552266, 34.605200042351903 ], [ -90.237429927293306, 34.607235187511456 ], [ -90.235945461286306, 34.61034788343305 ], [ -90.240715515444975, 34.614578670761247 ], [ -90.238072222721456, 34.620319184609102 ], [ -90.239480331929315, 34.623845356202686 ], [ -90.251270720033375, 34.623764041564407 ], [ -90.251250507939488, 34.630701372039624 ], [ -90.246590497403119, 34.630786375688317 ], [ -90.246195238678112, 34.661426362158494 ], [ -90.219632055726706, 34.661611084122285 ], [ -90.218039791885602, 34.665000659050364 ], [ -90.220790882443211, 34.667387132163107 ], [ -90.220489946823022, 34.669915758152285 ], [ -90.225960686903321, 34.672074910924316 ], [ -90.225325128839813, 34.668083481717687 ], [ -90.227541721803377, 34.667858138470571 ], [ -90.228237916148558, 34.670126319581804 ], [ -90.233679460982103, 34.672237445382144 ], [ -90.229800984742937, 34.674865657167985 ], [ -90.224480712472726, 34.675761409521776 ], [ -90.220007102357812, 34.683883686546011 ], [ -90.221621824081012, 34.686397035590744 ], [ -90.220027314451698, 34.68973943153933 ], [ -90.230548832216954, 34.698054210076414 ], [ -90.231209093950781, 34.701654621129165 ], [ -90.229149706161934, 34.703486154734492 ], [ -90.229201359290784, 34.705323186523344 ], [ -90.225641784977455, 34.707099252845566 ], [ -90.224947836420469, 34.711240182457558 ], [ -90.2189134034994, 34.712853667339289 ], [ -90.221978904406456, 34.715720571401022 ], [ -90.214774415827819, 34.721385783683367 ], [ -90.21196718056494, 34.723338705964125 ], [ -90.211915527436105, 34.727886731771115 ], [ -90.2084682425333, 34.727799981996377 ], [ -90.209141978996385, 34.723982901777738 ], [ -90.206116902277117, 34.724261621046786 ], [ -90.204580783141267, 34.721426393122933 ], [ -90.201587147456948, 34.719706012116688 ], [ -90.201200871884765, 34.724372370164339 ], [ -90.195900811708469, 34.720328085346083 ], [ -90.198577791255147, 34.725518614816643 ], [ -90.195130506352342, 34.727499125689249 ], [ -90.195568435053346, 34.724763682524802 ], [ -90.192815098707513, 34.724625246759949 ], [ -90.192781411884354, 34.728529046419489 ], [ -90.190544606826904, 34.727377306259577 ], [ -90.187371308085758, 34.728942487690702 ], [ -90.189861887210967, 34.730345219449838 ], [ -90.187914788832643, 34.732382829491996 ], [ -90.183883598995166, 34.7343447199504 ], [ -90.187746354716879, 34.734473911478737 ], [ -90.188584033719309, 34.739128362962582 ], [ -90.185635313799196, 34.736788251212367 ], [ -90.181801753324208, 34.743319359606943 ], [ -90.178491461502233, 34.742955816139514 ], [ -90.17713725121142, 34.745860428409031 ], [ -90.174469254817581, 34.743609085996347 ], [ -90.172382917570218, 34.747761104153255 ], [ -90.176295080632556, 34.747428950380758 ], [ -90.173247546031178, 34.750233762475766 ], [ -90.175567445252426, 34.751385184074401 ], [ -90.175542741582106, 34.7537968436352 ], [ -90.171855157340801, 34.754402053954458 ], [ -90.172762455777757, 34.758068278959989 ], [ -90.1702202235237, 34.759284167662827 ], [ -90.169557716001663, 34.755200998589338 ], [ -90.167770068586265, 34.758845047556569 ], [ -90.164010619122223, 34.758300756788415 ], [ -90.161564955761207, 34.760479743343062 ], [ -90.161645804136782, 34.758182672893867 ], [ -90.159112555035563, 34.757697420116799 ], [ -90.157765082109393, 34.75437806704452 ], [ -90.153453168745614, 34.756365266653518 ], [ -90.154486231322352, 34.758883793542239 ], [ -90.145896091417953, 34.758699288685683 ], [ -90.143133771919295, 34.755621686883863 ], [ -90.142972075168146, 34.758239869801379 ], [ -90.139776318544889, 34.758197433389924 ], [ -90.139686487016476, 34.762354253074292 ], [ -90.135417243628694, 34.758690063432034 ], [ -90.135720425037093, 34.760778634557909 ], [ -90.132897469256747, 34.761605192283554 ], [ -90.132841324551492, 34.759400404947087 ], [ -90.128868525207466, 34.761750946024172 ], [ -90.126696848008109, 34.756830231245772 ], [ -90.124700342289145, 34.759487121544645 ], [ -90.123822239098928, 34.755704717215067 ], [ -90.120516438853372, 34.755844946029292 ], [ -90.120671398239878, 34.752674978629273 ], [ -90.115838462011311, 34.750460726657288 ], [ -90.113601656953861, 34.744690476157217 ], [ -90.111135781498959, 34.745146279714533 ], [ -90.109451440341232, 34.74373457227005 ], [ -90.111490616036178, 34.742273014440144 ], [ -90.10680141025307, 34.740516158182032 ], [ -90.110129668380736, 34.737688869888601 ], [ -90.106230980047656, 34.736801169992283 ], [ -90.107567224032778, 34.732427124804573 ], [ -90.103987437625577, 34.735186306850451 ], [ -90.100540152722758, 34.730114508625185 ], [ -90.099706965296733, 34.732532326076793 ], [ -90.093490623530627, 34.730880466082887 ], [ -90.093151509510875, 34.732696587444586 ], [ -90.090472284175988, 34.731568898897343 ], [ -90.09043410577641, 34.735679074149076 ], [ -90.087020507696764, 34.733477285886643 ], [ -90.083288007691237, 34.732770412672082 ], [ -90.08504870564812, 34.731057650411557 ], [ -90.080328058830062, 34.73134557413551 ], [ -90.083696741145516, 34.729483280517606 ], [ -90.080777216472129, 34.729344852656531 ], [ -90.08076598753108, 34.725852702456713 ], [ -90.074307100638265, 34.724728612152958 ], [ -90.075551267306764, 34.721756805548921 ], [ -90.072063558216172, 34.720473911924465 ], [ -90.072146652379956, 34.722884627961939 ], [ -90.068656697501154, 34.723691260741845 ], [ -90.071100115073961, 34.726085270956013 ], [ -90.06693417794385, 34.72613879853386 ], [ -90.064239232091495, 34.728708081509538 ], [ -90.059922827151297, 34.727727998071622 ], [ -90.057513096401649, 34.723543594002223 ], [ -90.059642103625009, 34.719990283549976 ], [ -90.049691016065168, 34.711886318625815 ], [ -90.047755146627892, 34.715253529415371 ], [ -90.047514847289392, 34.711166338002634 ], [ -90.044442609017707, 34.714679414902044 ], [ -90.043717219425787, 34.711722015907334 ], [ -90.041660077425149, 34.71421605912478 ], [ -90.03689226905469, 34.712482605525352 ], [ -90.039540053354614, 34.710878343998509 ], [ -90.036986592159522, 34.708393431003664 ], [ -90.035677297632915, 34.710584810616275 ], [ -90.032283911647156, 34.710217430890239 ], [ -90.03317773535484, 34.708166351279388 ], [ -90.029088155023899, 34.707483262171962 ], [ -90.027251100267875, 34.709770665406602 ], [ -90.023693771742757, 34.709473435793569 ], [ -90.023952037386948, 34.712848129115493 ], [ -90.020765263916516, 34.713651167693413 ], [ -90.019325713673723, 34.711524482993461 ], [ -90.018627273540318, 34.713848695528057 ], [ -90.01134418237433, 34.71330226223472 ], [ -90.007155787362109, 34.716385132525446 ], [ -90.001676064128986, 34.715825793934897 ], [ -90.00198373711379, 34.721243650487828 ], [ -90.000191598121972, 34.719993975380341 ], [ -89.996957663099138, 34.716538350027093 ], [ -89.992650241311793, 34.716698951200001 ], [ -89.995152049378063, 34.717957905910289 ], [ -89.994096528919229, 34.71979092446535 ], [ -89.991790104427253, 34.718921491727208 ], [ -89.990790728673659, 34.722013381885127 ], [ -89.986317118558759, 34.71821080212527 ], [ -89.985872452493112, 34.721051677991696 ], [ -89.98112036464012, 34.721324869486629 ], [ -89.984233027099592, 34.722928928364624 ], [ -89.982512753330511, 34.725884080784482 ], [ -89.974508764149007, 34.723386697802383 ], [ -89.973370149526389, 34.725402329851661 ], [ -89.969172771361329, 34.725263895156289 ], [ -89.96286659806681, 34.723979210125485 ], [ -89.965274083028248, 34.67779482375105 ], [ -89.913396375370354, 34.677493785555981 ], [ -89.913416587464241, 34.693186943864575 ], [ -89.890969934302319, 34.69328296250599 ], [ -89.890954213784838, 34.677360811280892 ], [ -89.872345612674309, 34.677709868297633 ], [ -89.872298451121893, 34.670126319581804 ], [ -89.8641035699425, 34.670414455407517 ], [ -89.864247300387959, 34.666221610926009 ], [ -89.816870152303494, 34.666709247796739 ], [ -89.815987557536843, 34.629454025874317 ], [ -89.783733547260539, 34.62923966523752 ], [ -89.783807658271485, 34.632905895026802 ], [ -89.775536420292951, 34.63300567925809 ], [ -89.77543535982349, 34.640954770651973 ], [ -89.75780367658443, 34.641082260331281 ], [ -89.757738548726337, 34.645252358156419 ], [ -89.744688273436282, 34.645361365433054 ], [ -89.744643357672089, 34.652487174272579 ], [ -89.749500997570948, 34.6529564178649 ], [ -89.749451590230322, 34.661594459162409 ], [ -89.739927202430451, 34.661527959289536 ], [ -89.740273053814832, 34.688793971898114 ], [ -89.723148918711317, 34.688485587218693 ], [ -89.724350415403819, 34.758542459233439 ], [ -89.761426132967642, 34.776747445774916 ], [ -89.794524559611034, 34.819283261993775 ], [ -89.804183694703525, 34.826915808741546 ], [ -89.812356118000793, 34.829660771577046 ], [ -89.812652562044562, 34.854160441826252 ], [ -89.810343891764362, 34.857215937863266 ], [ -89.806696731710844, 34.856825253503466 ], [ -89.804340899878241, 34.86422766946955 ], [ -89.802652067144095, 34.86208643664461 ], [ -89.79683322989122, 34.871246173446181 ], [ -89.791914953710659, 34.871983182949492 ], [ -89.7850989864924, 34.878838897259634 ], [ -89.78645095099499, 34.887158582259275 ], [ -89.777391441354652, 34.888877313884947 ], [ -89.777645215422424, 34.895738986984824 ], [ -89.837585302755286, 34.894919300475308 ], [ -89.837976069903888, 34.904068011640348 ], [ -89.929327996934205, 34.904338755232395 ], [ -89.928885576656782, 34.994190983912169 ], [ -89.953991243059718, 34.994275613407694 ], [ -89.999913120383908, 34.994680361958835 ], [ -90.171987658845211, 34.994735554788001 ], [ -90.308286791116458, 34.995206532082861 ], [ -90.309854351287242, 34.999978703828276 ], [ -90.309802698158407, 35.008126074717829 ], [ -90.305117983951718, 35.013888897674676 ], [ -90.305704134674599, 35.017933483662041 ], [ -90.300808316376163, 35.02674112354142 ], [ -90.296770389174043, 35.036960033354021 ], [ -90.292869455052752, 35.041181833608867 ], [ -90.264134594901975, 35.04031763267205 ], [ -90.26257601788403, 35.036327480031652 ], [ -90.257231041943513, 35.035045809015273 ], [ -90.252389122562107, 35.031632825179869 ], [ -90.243482326520066, 35.032717787002831 ], [ -90.232280334927097, 35.031211708999074 ], [ -90.213159694104604, 35.025422520792439 ], [ -90.193565191969753, 35.041191027186706 ], [ -90.19549207825419, 35.056711988509541 ], [ -90.186506679624785, 35.078411016081951 ], [ -90.174469254817581, 35.115121705431093 ], [ -90.163184169060827, 35.125645485765546 ], [ -90.130267651262486, 35.130116165421342 ], [ -90.08367652905163, 35.123281473379592 ], [ -90.068771232699874, 35.135907112347859 ], [ -90.068665680653993, 35.156206151185302 ], [ -90.093036974312156, 35.167262534397665 ], [ -90.105411267350888, 35.174423962533616 ], [ -90.107643580831933, 35.181386520211795 ], [ -90.114825611528474, 35.183941572381869 ], [ -90.117284749618747, 35.188636638415602 ], [ -90.115618374766697, 35.198787552362703 ], [ -90.108020873251263, 35.19909585895536 ], [ -90.097131046219531, 35.194922609723228 ], [ -90.088891249275932, 35.21212257809961 ], [ -90.080545900286481, 35.208203221600762 ], [ -90.075034736018395, 35.214994083902603 ], [ -90.074935921337143, 35.220922091817656 ], [ -90.097982199951232, 35.250773881020955 ], [ -90.104036844966188, 35.254344574037397 ], [ -90.114964850397513, 35.256343506589694 ], [ -90.137820237013727, 35.252550994431566 ], [ -90.144678874207983, 35.253183703424206 ], [ -90.150574068260013, 35.255103807436655 ], [ -90.167826213291519, 35.277230318984422 ], [ -90.168506687119248, 35.282350809129802 ], [ -90.164825840242557, 35.294348684319829 ], [ -90.162005130250421, 35.299015368210796 ], [ -90.150618984024206, 35.303500336710734 ], [ -90.139987422636651, 35.299169331200595 ], [ -90.130415873284363, 35.301121336563973 ], [ -90.124107454201635, 35.30451019929199 ], [ -90.116346010146842, 35.303656123956578 ], [ -90.109092114227579, 35.305267129768005 ], [ -90.107605402432355, 35.32143405988819 ], [ -90.103738155134224, 35.332744590963301 ], [ -90.110520435529324, 35.342762058086542 ], [ -90.107165227943142, 35.343016692217496 ], [ -90.0937443975984, 35.360829929503566 ], [ -90.09021851010823, 35.361016741609241 ], [ -90.083213896680306, 35.370199305773056 ], [ -90.075562496247812, 35.384123163620345 ], [ -90.041736434224291, 35.411989294949741 ], [ -90.00539733519345, 35.440528268747201 ], [ -90.00701430270486, 35.486034268771327 ], [ -90.012134699824344, 35.500301949042139 ], [ -89.999949052995277, 35.511300394074247 ], [ -89.97089304513041, 35.521368793097942 ], [ -89.908460132884116, 35.515144741203279 ], [ -89.89732326914924, 35.613097853846135 ], [ -89.880807742650703, 35.621853686917511 ], [ -89.940172908201745, 35.670909501367085 ], [ -89.940413207540246, 35.723729406912817 ], [ -89.768962998201417, 35.782575930918576 ], [ -89.693338326007805, 35.826105042502064 ], [ -89.772814524982067, 35.880903664726581 ], [ -89.731424648266255, 35.91014684805652 ], [ -89.660534097619959, 35.874010641351646 ], [ -89.63957640204147, 35.902399566190638 ], [ -89.723034383512584, 35.975901775886648 ], [ -89.713312366350195, 35.999552159085127 ], [ -89.671691173448735, 36.097374584273844 ], [ -89.591413228083397, 36.123680568920435 ], [ -89.602118900481898, 36.164904388182435 ], [ -89.681271705953861, 36.219727063735306 ], [ -89.685731841339518, 36.241186763353873 ], [ -89.58165303252143, 36.243229892108339 ], [ -89.554743998185629, 36.278934359194984 ], [ -89.554804634467303, 36.278972378277388 ], [ -89.612761690810487, 36.316844665473766 ], [ -89.61298402384331, 36.34213992396856 ], [ -89.523148003854928, 36.341705770943065 ], [ -89.5104278594318, 36.365119444146309 ], [ -89.545201644080066, 36.43297835870019 ], [ -89.519172958722706, 36.464981976418649 ], [ -89.544067521033867, 36.500438607872759 ], [ -89.560311307158969, 36.523652858836982 ], [ -89.571825463313161, 36.553405503345267 ], [ -89.5636979557801, 36.56971957592939 ], [ -89.540990791185763, 36.581175608877821 ], [ -89.492908465603264, 36.57426467903791 ], [ -89.463585208941382, 36.548173591896557 ], [ -89.482231988451503, 36.500389865242504 ], [ -89.495785320300655, 36.468270829990566 ], [ -89.462309601237948, 36.456593955479697 ], [ -89.435919343978725, 36.47416007579006 ], [ -89.426913733255432, 36.48459924892223 ], [ -89.420670442030797, 36.492509403234997 ], [ -89.416652726922578, 36.500108240555733 ], [ -89.409425780461831, 36.519788812630679 ], [ -89.398425909807784, 36.543930071202638 ], [ -89.396299148372634, 36.55791007574247 ], [ -89.386217805096592, 36.577520034899798 ], [ -89.36146248165447, 36.577480358258406 ], [ -89.342604598052588, 36.596493953475544 ], [ -89.31252900234027, 36.602485222610305 ], [ -89.258248301297357, 36.561781236513305 ], [ -89.216885374040075, 36.57332141177875 ], [ -89.186964737714263, 36.637006633598617 ], [ -89.1406790427, 36.685651374478702 ], [ -89.125457090210602, 36.751475071233457 ], [ -89.120718477086868, 36.75638550880916 ], [ -89.119490030935836, 36.759105997027213 ], [ -89.107683922314294, 36.755584817643125 ], [ -89.108460965035064, 36.750323439056672 ], [ -89.099365522783344, 36.748383619530728 ], [ -89.098361655453346, 36.752729250987393 ], [ -89.097418424405006, 36.75428210224608 ], [ -89.091660223433806, 36.751251943849311 ], [ -89.087040637085224, 36.750944242924497 ], [ -89.082764656332813, 36.749378727881023 ], [ -89.077345569381364, 36.748934259742505 ], [ -89.073761291397716, 36.743044363950297 ], [ -89.073938708666347, 36.739979567819432 ], [ -89.071809701442973, 36.733934200156199 ], [ -89.063603591322547, 36.730118480424309 ], [ -89.063527234523391, 36.725083960062634 ], [ -89.060250629524575, 36.723818528174014 ], [ -89.057376020615393, 36.720196721677411 ], [ -89.052453252858413, 36.715860049781725 ], [ -89.04784040387446, 36.713264050177223 ], [ -89.035868106925363, 36.712912989406092 ], [ -89.032027809085747, 36.708511091284635 ], [ -89.028349207997266, 36.696649016212255 ], [ -89.041493806392154, 36.693661602209197 ], [ -89.027401485372536, 36.686373553780605 ], [ -89.016949587041793, 36.671449538520108 ], [ -89.016738482950032, 36.6643773613768 ], [ -89.005428693522958, 36.664301700339117 ], [ -89.005237801525098, 36.66084643370089 ], [ -89.002104926971725, 36.660837426025203 ], [ -89.00014435386413, 36.658360275211578 ], [ -88.999016968182559, 36.654758806141032 ], [ -88.996344480212301, 36.654973205464017 ], [ -88.996315284965576, 36.653252589025783 ], [ -88.989613852946036, 36.650760779993838 ], [ -88.984497947402986, 36.647813026154871 ], [ -88.982676613164429, 36.654829071531154 ], [ -88.982735003657893, 36.661799439833111 ], [ -88.98307411767766, 36.665097938960763 ], [ -88.979476364964754, 36.676698309380569 ], [ -88.991729385440138, 36.677110774825522 ], [ -88.997123768721281, 36.676109326505703 ], [ -89.000173549110869, 36.680120444820489 ], [ -89.002641670353981, 36.684727479350101 ], [ -89.009790014227363, 36.686852601646152 ], [ -89.017836673384863, 36.706231727154339 ], [ -89.021490570803024, 36.716675557209442 ], [ -89.048240154175886, 36.741912401241379 ], [ -89.062119125315533, 36.746978209443412 ], [ -89.076316998381046, 36.751219554336387 ], [ -89.088278066389094, 36.763553571524419 ], [ -89.092098152134824, 36.765780860207435 ], [ -89.103765021887313, 36.76534728161694 ], [ -89.108465456611484, 36.770595036997868 ], [ -89.117361023712462, 36.775712916621288 ], [ -89.123543678655423, 36.78467063210887 ], [ -89.145231255402265, 36.829001296676225 ], [ -89.128926832995518, 36.867138483326194 ], [ -89.121203567340288, 36.880510117215245 ], [ -89.106325220447061, 36.929196268988449 ], [ -89.085196844964571, 36.929727656705438 ], [ -89.08114319724497, 36.925417205581759 ], [ -89.084437768549478, 36.920321905748729 ], [ -89.081926977330369, 36.91798420182517 ], [ -89.081273452961184, 36.914619362388414 ], [ -89.078841264329412, 36.915940896540576 ], [ -89.079378007711682, 36.920402700686068 ], [ -89.075005458066244, 36.919707861427419 ], [ -89.075182875334846, 36.915795457082702 ], [ -89.070525110586686, 36.91496231706558 ], [ -89.069177637660502, 36.918276867607716 ], [ -89.071659233632886, 36.92146200416753 ], [ -89.068288305529236, 36.920334473855718 ], [ -89.06382592435537, 36.922704422719214 ], [ -89.065622554923607, 36.924767295514705 ], [ -89.064389617196156, 36.926937829865928 ], [ -89.06081432236536, 36.928097577232101 ], [ -89.02280884848247, 36.89405362835975 ], [ -89.014584772056352, 36.879274197117077 ], [ -89.008786146897364, 36.879029884962478 ], [ -89.005466871922536, 36.880644845668023 ], [ -89.000319525344537, 36.882552575046375 ], [ -89.011651772653707, 36.887411500956958 ], [ -89.006522392381385, 36.90540569388709 ], [ -89.000633935693983, 36.906373621333415 ], [ -88.980123151969309, 36.909403029170321 ], [ -88.973527271995678, 36.899134519516224 ], [ -88.962621724446464, 36.901205213408453 ], [ -88.966426089674698, 36.891117009990495 ], [ -88.936705328499613, 36.893186125333266 ], [ -88.936200026152292, 36.908007756687006 ], [ -88.9265206789659, 36.910015360774182 ], [ -88.912401408487753, 36.902185765239793 ], [ -88.889617887094275, 36.906554994127006 ], [ -88.877690505909385, 36.897871961321663 ], [ -88.862205796199376, 36.893766257848846 ], [ -88.852389455932155, 36.896228628829469 ], [ -88.840724831967862, 36.895291105261094 ], [ -88.832794953797304, 36.897963555862091 ], [ -88.806799955263088, 36.893495050936835 ], [ -88.807857721510146, 36.887636027951331 ], [ -88.788180125211497, 36.887415093394061 ], [ -88.785963532247933, 36.882205882008122 ], [ -88.792530216974853, 36.878083167981167 ], [ -88.792404452835072, 36.871227652746263 ], [ -88.778038145653781, 36.858429404149092 ], [ -88.777804583679924, 36.851940521944513 ], [ -88.733459249679356, 36.835657489921914 ], [ -88.725396870004388, 36.827956888651393 ], [ -88.720101301404497, 36.841879958502716 ], [ -88.670352600969963, 36.841516905208614 ], [ -88.677173059764641, 36.855218275963423 ], [ -88.679650164160606, 36.863615082298679 ], [ -88.675001382565284, 36.868609962733956 ], [ -88.678172435518221, 36.875462119900021 ], [ -88.678774306758584, 36.882383719566342 ], [ -88.678062391895921, 36.889453774184275 ], [ -88.65316558379655, 36.889920777097728 ], [ -88.653237449019272, 36.86542441663461 ], [ -88.646156478792207, 36.865415432955267 ], [ -88.646342879213663, 36.862041088288542 ], [ -88.653533893063042, 36.861820079684513 ], [ -88.654425470982517, 36.857592044049838 ], [ -88.632953489903855, 36.857176954419295 ], [ -88.6291042089114, 36.886130786355913 ], [ -88.585345025633742, 36.885291933591873 ], [ -88.611346761532573, 36.869601713086624 ], [ -88.574938043067206, 36.868883054695253 ], [ -88.558566247014141, 36.883299845879492 ], [ -88.55034441637622, 36.883475884578743 ], [ -88.522768382941962, 36.870976128431742 ], [ -88.511948175344742, 36.8819741536593 ], [ -88.52996388836776, 36.889525620972286 ], [ -88.515346052906921, 36.909036705274524 ], [ -88.486862721035706, 36.891925264846613 ], [ -88.483141449971242, 36.88812100400564 ], [ -88.46837314670033, 36.89930154200885 ], [ -88.503753294165364, 36.914901267654713 ], [ -88.502632645848422, 36.936470214247372 ], [ -88.501511997531495, 36.941248524040518 ], [ -88.48466184858961, 36.93957920117905 ], [ -88.471398223419598, 36.956416146263507 ], [ -88.467416440922733, 36.961352913759043 ], [ -88.460914884053906, 36.962933831979804 ], [ -88.4353757805264, 36.946798310889882 ], [ -88.431250267584076, 36.957858986004176 ], [ -88.419769798253029, 36.958919563455098 ], [ -88.400395383362792, 36.972325352620317 ], [ -88.360492218442189, 36.936423542576549 ], [ -88.357092095091815, 36.926374107281831 ], [ -88.357226842384421, 36.918666488409634 ], [ -88.357956723552775, 36.907056011781499 ], [ -88.327223111894838, 36.907557026145753 ], [ -88.316304089616366, 36.939180712250483 ], [ -88.321343638360275, 36.943784747814249 ], [ -88.346018113426823, 36.948550035472699 ], [ -88.36164430779408, 36.957701064578806 ], [ -88.357130273491379, 36.964633147875936 ], [ -88.346334769564479, 36.972655488167263 ], [ -88.358226218138014, 36.989443862942686 ], [ -88.358165581856326, 36.999689445165394 ], [ -88.358136386609587, 37.031893408858103 ], [ -88.335947999091843, 37.038379531468806 ], [ -88.304969596518987, 37.027404070921435 ], [ -88.298005407278836, 37.037472439849445 ], [ -88.292222502637316, 37.031158351724173 ], [ -88.280944154245205, 37.022306629547955 ], [ -88.273941786605491, 37.026781925281561 ], [ -88.254122705649607, 37.017495751223485 ], [ -88.255456703846519, 37.009133816780178 ], [ -88.26449824718118, 37.00357781316626 ], [ -88.261039733337327, 36.999911847958899 ], [ -88.250347535668084, 36.99192287513749 ], [ -88.237865444795247, 36.979455244215444 ], [ -88.212429647525411, 36.993675355268131 ], [ -88.159592988301696, 36.994450236370604 ], [ -88.153695548461457, 36.999809614497508 ], [ -88.10702357787504, 37.051785655396245 ], [ -88.07529059046351, 37.034440954257043 ], [ -88.056268764322269, 37.0433199430001 ], [ -88.017672648140078, 37.03547895141719 ], [ -87.999955624949038, 37.037940328381822 ], [ -87.974194188388708, 37.039048190882212 ], [ -87.95359357313562, 37.053493739919531 ], [ -87.953676667299419, 37.053509870649933 ], [ -87.953609293653088, 37.053506286043472 ], [ -87.940413042129379, 37.051124277611784 ], [ -87.929294144700194, 37.065852458765157 ], [ -87.914934574883546, 37.065515559829414 ], [ -87.90145310825713, 37.058237819164496 ], [ -87.899402703621121, 37.046833247598769 ], [ -87.887470830859797, 37.048537858740588 ], [ -87.889307885615821, 37.061232512084651 ], [ -87.888728472257569, 37.081805060417722 ], [ -87.875900530000351, 37.08713856924598 ], [ -87.87587807211824, 37.087126028684544 ], [ -87.874063475244313, 37.066035243731804 ], [ -87.856642896097028, 37.062954720602214 ], [ -87.846125869908192, 37.082466170734598 ], [ -87.84605849626189, 37.082584417500513 ], [ -87.825875597615934, 37.079067393185284 ], [ -87.818340978170383, 37.080497155813795 ], [ -87.795517032589117, 37.097646830293158 ], [ -87.744638700684789, 37.109598966814566 ], [ -87.729241576714983, 37.11082219463978 ], [ -87.715131289389674, 37.089739795137056 ], [ -87.711769344438864, 37.065404454533144 ], [ -87.690034606139591, 37.056106873529053 ], [ -87.689845959929926, 37.032513719831073 ], [ -87.65795127576726, 37.019409021836807 ], [ -87.656677913852022, 37.033033629749383 ], [ -87.655413535089622, 37.046566170460004 ], [ -87.675668298958314, 37.082946323122776 ], [ -87.65544722191278, 37.111595880515871 ], [ -87.624309368376984, 37.117919391637209 ], [ -87.589726475726593, 37.087493287124524 ], [ -87.568175892060566, 37.087296221841399 ], [ -87.508116777952537, 37.068544012486804 ], [ -87.490999380213651, 37.052418350158931 ], [ -87.493979541168727, 37.046768718980204 ], [ -87.485427579663892, 37.026471747021546 ], [ -87.466735884389593, 37.050075740043972 ], [ -87.480257775203782, 37.084906316623481 ], [ -87.447543378344378, 37.101197024866792 ], [ -87.432058668634355, 37.128570206630691 ], [ -87.415873273002731, 37.103160128635068 ], [ -87.445102206559767, 37.067192871625245 ], [ -87.402652317808716, 37.067449124327851 ], [ -87.38039880243285, 37.08671577203026 ], [ -87.388595929400452, 37.114038670151892 ], [ -87.373007913432758, 37.131315037594035 ], [ -87.316901386574855, 37.126828001997715 ], [ -87.311334077601543, 37.155677537757398 ], [ -87.292774883831626, 37.157675025621515 ], [ -87.261360798345976, 37.166403571504731 ], [ -87.249619817582527, 37.165515908143711 ], [ -87.215533244126604, 37.127112702104597 ], [ -87.184128141793778, 37.112915784702288 ], [ -87.175823216992114, 37.123986313939454 ], [ -87.166761461563553, 37.137124869955642 ], [ -87.154162589703773, 37.170813099464802 ], [ -87.153628092109727, 37.182580125411981 ], [ -87.132519928721123, 37.180558245586631 ], [ -87.099933541789682, 37.157725141125816 ], [ -87.085052949108245, 37.105252139428039 ], [ -87.077057943079581, 37.123146500384699 ], [ -87.06074678330819, 37.126376776993062 ], [ -87.052758514644154, 37.102835933435834 ], [ -87.030918224298986, 37.105685579643982 ], [ -87.036833630444917, 37.113189791778488 ], [ -87.038742550423677, 37.133791208676705 ], [ -87.025328457443564, 37.153459834841044 ], [ -87.029988467979933, 37.158152911399817 ], [ -87.03218709463782, 37.16350430984815 ], [ -87.030224275742015, 37.177847410281416 ], [ -87.034228516120976, 37.189262679391987 ], [ -87.035733194221876, 37.200030455825441 ], [ -87.018501261284257, 37.208120930939224 ], [ -87.006594092193254, 37.205169608928877 ], [ -87.004640256450287, 37.237670712989711 ], [ -87.023498140052169, 37.246792253296917 ], [ -87.023408308523756, 37.259289223398675 ], [ -87.018391217661943, 37.266658442939587 ], [ -87.006320106031595, 37.26240107735417 ], [ -86.99956477509501, 37.264440424822311 ], [ -86.987226414667646, 37.268081085762113 ], [ -86.980641763635035, 37.2678880654476 ], [ -86.983563534096632, 37.273430053729406 ], [ -86.9808304098447, 37.283605089931633 ], [ -86.980594602082618, 37.293759097857205 ], [ -86.986792977543047, 37.301149953528054 ], [ -86.988376258231312, 37.307391507657293 ], [ -86.987116371045317, 37.314023707609287 ], [ -86.965963291892521, 37.321591167154629 ], [ -86.959946825277129, 37.32535585965492 ], [ -86.948843648365411, 37.325363003104677 ], [ -86.951367914313792, 37.329143578596856 ], [ -86.944293681451356, 37.329343584850541 ], [ -86.943247144145346, 37.34149653702444 ], [ -86.93116031199753, 37.347832934110876 ], [ -86.927867986481232, 37.355673686053137 ], [ -86.901149844143305, 37.354638296709268 ], [ -86.884762327572744, 37.342078600872966 ], [ -86.884564698210255, 37.326316647549966 ], [ -86.892312667535776, 37.313352119047906 ], [ -86.880852410298615, 37.296101311288133 ], [ -86.859407378678469, 37.310617477076292 ], [ -86.84868823155071, 37.313634329865756 ], [ -86.851731274575684, 37.322777029921397 ], [ -86.844504328114937, 37.326911329812994 ], [ -86.842855919568578, 37.333409667972099 ], [ -86.85426003210047, 37.334488205571432 ], [ -86.852946245997444, 37.344854947638034 ], [ -86.839583806146166, 37.343767631776309 ], [ -86.839132402715904, 37.351814110411937 ], [ -86.863117420801899, 37.362508682499744 ], [ -86.852178186429526, 37.36699420106212 ], [ -86.858536012852881, 37.380989865245127 ], [ -86.863539628985436, 37.380584773692696 ], [ -86.863079242402321, 37.385261931028779 ], [ -86.8549876674806, 37.389747873449558 ], [ -86.837558105180477, 37.388739719637755 ], [ -86.833165343441138, 37.404331576455405 ], [ -86.833176572382186, 37.415145306161506 ], [ -86.824289988434032, 37.418559280609529 ], [ -86.821397413219159, 37.424882035395306 ], [ -86.81285892644361, 37.428796703379987 ], [ -86.806977207120838, 37.433376337577698 ], [ -86.812501846118181, 37.447678756697222 ], [ -86.830212131944592, 37.46653822041182 ], [ -86.847616990574394, 37.471261700723446 ], [ -86.865448548964181, 37.46816384430057 ], [ -86.87665503213357, 37.47948519153956 ], [ -86.872403755051479, 37.485385799481136 ], [ -86.875747733696613, 37.485380453324247 ], [ -86.869041810100654, 37.490888574102442 ], [ -86.864280739094824, 37.499908113380229 ], [ -86.870364579356533, 37.508563138336477 ], [ -86.874723654272714, 37.507027470203326 ], [ -86.877499448500643, 37.50743544080516 ], [ -86.878709928345998, 37.505748316481991 ], [ -86.882253782141845, 37.507134362279622 ], [ -86.87237231401653, 37.516574110456283 ], [ -86.868839689161732, 37.514108739427691 ], [ -86.867180051674325, 37.516650706662027 ], [ -86.871476244520622, 37.518166582838326 ], [ -86.870755346505106, 37.519987018583443 ], [ -86.867047550169914, 37.520804597092692 ], [ -86.870164704205806, 37.524466668886653 ], [ -86.869392153061469, 37.526516709390478 ], [ -86.865612491503526, 37.529973687446699 ], [ -86.870652040247435, 37.536509627471922 ], [ -86.875024589892902, 37.535638795514302 ], [ -86.877982292965854, 37.536548805766749 ], [ -86.87091928904448, 37.540338318087201 ], [ -86.872208371477186, 37.543262236841073 ], [ -86.866528773093336, 37.543686035281958 ], [ -86.864145991802218, 37.546212749934192 ], [ -86.864053914485581, 37.549287783233105 ], [ -86.860375313397114, 37.557287261052771 ], [ -86.853988291727035, 37.553220863270866 ], [ -86.851587544130211, 37.554735996261002 ], [ -86.855928652740715, 37.557216047589073 ], [ -86.852418485768027, 37.557848064701133 ], [ -86.85404219064408, 37.561892847276191 ], [ -86.848301955978556, 37.562019243193518 ], [ -86.849871761937536, 37.559158370424498 ], [ -86.847172324508776, 37.556523493105296 ], [ -86.840794285991521, 37.554773384582226 ], [ -86.836801274553608, 37.557680714212971 ], [ -86.838903332318452, 37.559220680584701 ], [ -86.839464779371028, 37.563619646190972 ], [ -86.835795161435399, 37.56159198852577 ], [ -86.829783186396426, 37.562866624369029 ], [ -86.831667402704866, 37.559772568300346 ], [ -86.828934278452934, 37.560235438716283 ], [ -86.826737897583257, 37.558284242398507 ], [ -86.827068028450171, 37.560919057455536 ], [ -86.821511948417893, 37.561867924112249 ], [ -86.816710453224275, 37.564851523635163 ], [ -86.818075892456136, 37.56167209896261 ], [ -86.815259674040419, 37.560689404984956 ], [ -86.817200035054128, 37.557481317395954 ], [ -86.811172339497674, 37.559582078486272 ], [ -86.812088621087483, 37.555373375552342 ], [ -86.80893104286379, 37.554737776657674 ], [ -86.809009645451155, 37.557905034994327 ], [ -86.806215884917549, 37.560110820041025 ], [ -86.805892491415264, 37.552335982869749 ], [ -86.802600165898966, 37.552229155551217 ], [ -86.798988938456816, 37.550037381267948 ], [ -86.799027116856379, 37.552560319740252 ], [ -86.796592682436426, 37.553731845759422 ], [ -86.798072656867006, 37.556149617829483 ], [ -86.792844461913432, 37.559550033422965 ], [ -86.790205660766318, 37.556867100633134 ], [ -86.776254824403949, 37.565577823333896 ], [ -86.7558967542776, 37.58235551084006 ], [ -86.752040735920517, 37.569816210476702 ], [ -86.745332566536348, 37.572860010443001 ], [ -86.717370257529922, 37.577583884024499 ], [ -86.73363425574891, 37.560619975028914 ], [ -86.740003311113313, 37.560036048735817 ], [ -86.740248102028232, 37.553103354607266 ], [ -86.733571373679027, 37.548552422016328 ], [ -86.725587596591396, 37.551216068868939 ], [ -86.717920475641449, 37.547772539481898 ], [ -86.708723972920268, 37.548427783802943 ], [ -86.701609315870044, 37.543303192257746 ], [ -86.698498899198782, 37.543675351317241 ], [ -86.69853483181015, 37.548287120426068 ], [ -86.692334210561512, 37.546458472371235 ], [ -86.676139831777036, 37.544072437643095 ], [ -86.67245449332394, 37.546741586348787 ], [ -86.666792861245781, 37.546353417225525 ], [ -86.669402467146142, 37.549291344286722 ], [ -86.664398851013601, 37.556927632365081 ], [ -86.648233667475864, 37.554445791034517 ], [ -86.643533232751722, 37.559119204011417 ], [ -86.639966921073764, 37.560066313320768 ], [ -86.642978523063775, 37.562887986795118 ], [ -86.639877089545337, 37.566286314746321 ], [ -86.637813210180084, 37.562928931427997 ], [ -86.635210341644338, 37.566989459108711 ], [ -86.632225689112857, 37.563915156221171 ], [ -86.628300051321261, 37.565989033994299 ], [ -86.624419329293858, 37.565009957261545 ], [ -86.62058352303066, 37.554303358608081 ], [ -86.60968246705788, 37.550603580961614 ], [ -86.605307671624217, 37.55134960480833 ], [ -86.603524515785239, 37.549711547418944 ], [ -86.60677641711375, 37.548951262898647 ], [ -86.610520146060324, 37.544035043953741 ], [ -86.603257266988223, 37.540190516469757 ], [ -86.597119527809468, 37.545286832025504 ], [ -86.593342112039736, 37.543182106612953 ], [ -86.594224706806401, 37.546754050461452 ], [ -86.590348476355416, 37.546187821525763 ], [ -86.589721901444747, 37.548969068245412 ], [ -86.58626563338909, 37.547275760736596 ], [ -86.583245048246255, 37.550211870940231 ], [ -86.58074548596818, 37.546559966184937 ], [ -86.57761934877945, 37.545872654500215 ], [ -86.577336379464938, 37.548582691265274 ], [ -86.573462394802178, 37.545698154670021 ], [ -86.565754849664444, 37.547799247922804 ], [ -86.562536635159077, 37.527882778082571 ], [ -86.549021481709502, 37.522040744536255 ], [ -86.540114685667461, 37.527451765629458 ], [ -86.519929541233282, 37.525854148160597 ], [ -86.502585318885139, 37.520263108188594 ], [ -86.474654450913661, 37.529816960327075 ], [ -86.461653582964246, 37.530798280390307 ], [ -86.446869559175838, 37.534910423142755 ], [ -86.430387719500459, 37.51799201817304 ], [ -86.409701764295406, 37.528584503773246 ], [ -86.40502154166515, 37.536459764157819 ], [ -86.398055106636789, 37.540794186290725 ], [ -86.395142319328031, 37.543657544705994 ], [ -86.394169893032966, 37.550178041341809 ], [ -86.389925353315519, 37.547176048474782 ], [ -86.38803439964245, 37.554322943082866 ], [ -86.385689796750881, 37.556379284292568 ], [ -86.390556419802607, 37.560984926638163 ], [ -86.390722608130162, 37.566054898694361 ], [ -86.384488300058379, 37.566022856415117 ], [ -86.375525359311084, 37.558825455257072 ], [ -86.369809828315866, 37.558492538602167 ], [ -86.36991987193818, 37.560922617953381 ], [ -86.376495539817924, 37.563500373738314 ], [ -86.366589368022304, 37.571612245501974 ], [ -86.362230293106109, 37.571500105831525 ], [ -86.36170927024132, 37.568543473609928 ], [ -86.366382755506947, 37.562252451999299 ], [ -86.353914139363368, 37.562277375034604 ], [ -86.345937099640381, 37.561129126537402 ], [ -86.35010977413512, 37.565741595816966 ], [ -86.35202093990209, 37.587618006050228 ], [ -86.344104536460776, 37.586883023152815 ], [ -86.343792371899553, 37.593698687823192 ], [ -86.340133982904973, 37.594454956787395 ], [ -86.341162553905292, 37.590363894894693 ], [ -86.331873973867502, 37.588030874615441 ], [ -86.328096558097769, 37.59181421007473 ], [ -86.325417332762882, 37.586206761291692 ], [ -86.327402609540798, 37.582318136361394 ], [ -86.31387847293837, 37.587004037785135 ], [ -86.315387642615704, 37.581581321379538 ], [ -86.309791138395639, 37.578995292249751 ], [ -86.305957577920651, 37.585922017617364 ], [ -86.306245038811568, 37.592230614364269 ], [ -86.299137119125973, 37.595043951527387 ], [ -86.29813325179596, 37.592317809839294 ], [ -86.302831440731907, 37.588210614094258 ], [ -86.299078728632509, 37.585201255323739 ], [ -86.295496696437084, 37.591323063559059 ], [ -86.290344858282651, 37.586576926439925 ], [ -86.287402875727153, 37.586913276829335 ], [ -86.288218096847501, 37.591084607197821 ], [ -86.283888217178045, 37.591267898349393 ], [ -86.2799109262576, 37.595326880877842 ], [ -86.27323195212017, 37.591000969337905 ], [ -86.277826834798446, 37.5881323118004 ], [ -86.267720787852113, 37.584443112639441 ], [ -86.264985417811957, 37.588724915749694 ], [ -86.260830709622894, 37.585624815245545 ], [ -86.256009002335389, 37.588952702198561 ], [ -86.262881114258903, 37.592497538965468 ], [ -86.255636201492479, 37.596273529751215 ], [ -86.255804635608257, 37.592303573850344 ], [ -86.248166709905036, 37.594015431995359 ], [ -86.240845440339456, 37.591915642103494 ], [ -86.23654251012853, 37.588036213418093 ], [ -86.236228099779083, 37.581316137391397 ], [ -86.233340016140644, 37.581214690917946 ], [ -86.23363421439619, 37.574743188128558 ], [ -86.228082625940331, 37.577108662372069 ], [ -86.230519306148508, 37.578612630620341 ], [ -86.223986308244747, 37.581166637277022 ], [ -86.219591300717198, 37.580314124935668 ], [ -86.222158236641562, 37.576355776916287 ], [ -86.214329418940451, 37.575611783337877 ], [ -86.211753499863249, 37.578285141896686 ], [ -86.20784582837733, 37.576902198087367 ], [ -86.208811517307751, 37.571071125533798 ], [ -86.200241589497253, 37.575261142638801 ], [ -86.201858557008677, 37.571446705929112 ], [ -86.199107466451053, 37.57033419925434 ], [ -86.197052570238625, 37.565707773268436 ], [ -86.190003041046509, 37.564867545028427 ], [ -86.192403788643318, 37.542304229806774 ], [ -86.18391695499659, 37.53775085708115 ], [ -86.141617534055612, 37.549969721897355 ], [ -86.175962373155713, 37.519201493538112 ], [ -86.185556380390111, 37.505693087902934 ], [ -86.154256830103179, 37.512843958231649 ], [ -86.131819160094082, 37.50843487028164 ], [ -86.134347917618882, 37.500462221818943 ], [ -86.114946553270102, 37.484984836652629 ], [ -86.108995214512817, 37.487718469436231 ], [ -86.101626783394821, 37.488926653353921 ], [ -86.091107511417775, 37.48728187899588 ], [ -86.088726975914867, 37.493534679864084 ], [ -86.077387991241068, 37.492592071119866 ], [ -86.070756178656055, 37.494514695244902 ], [ -86.054546079354125, 37.495419861663351 ], [ -86.05694682695092, 37.491505116212025 ], [ -86.06025711877291, 37.493372530624853 ], [ -86.062318752349967, 37.490783440691473 ], [ -86.052248638014987, 37.483159983085642 ], [ -86.052428301071799, 37.47949766688933 ], [ -86.049733355219445, 37.477039982774926 ], [ -86.055260240004998, 37.475631990992348 ], [ -86.055435411485391, 37.472129719168201 ], [ -86.060517630205297, 37.473192003178212 ], [ -86.064611702112686, 37.467942818567543 ], [ -86.07774956314293, 37.443955861784801 ], [ -86.079274453337717, 37.430341112889835 ], [ -86.074697536965118, 37.421701997252306 ], [ -86.070789865479213, 37.412747939563452 ], [ -86.070789865479213, 37.406035261674361 ], [ -86.074273082993386, 37.400825966163559 ], [ -86.093236518641149, 37.397586029865579 ], [ -86.098318737361055, 37.391430478729774 ], [ -86.089162658827661, 37.386525302346143 ], [ -86.0731187478533, 37.382278291669607 ], [ -86.066116380213572, 37.374368931587014 ], [ -86.069617564033422, 37.369869575495706 ], [ -86.065112512883587, 37.36237659392561 ], [ -86.070706771315429, 37.354850731204692 ], [ -86.063994110354855, 37.350359130996345 ], [ -86.073215316746342, 37.347615123756043 ], [ -86.070819060725952, 37.341335843756255 ], [ -86.077796724695347, 37.341958974622109 ], [ -86.080282812244135, 37.344642484856735 ], [ -86.088875197936744, 37.339966366063656 ], [ -86.079647254180628, 37.349950303484498 ], [ -86.091257979227876, 37.352203290309774 ], [ -86.091042383559682, 37.346220765449345 ], [ -86.095149930196314, 37.346468930985814 ], [ -86.103221293024134, 37.352440724761088 ], [ -86.105395216011715, 37.337434462795471 ], [ -86.095118489161365, 37.331073973868513 ], [ -86.108799830938523, 37.333207886867243 ], [ -86.115579865545399, 37.338936116711523 ], [ -86.121129208213048, 37.331866832302076 ], [ -86.123862332464995, 37.337141627855871 ], [ -86.116222160973564, 37.34359265993713 ], [ -86.121850106228564, 37.34596367223002 ], [ -86.128050727477188, 37.339473562244258 ], [ -86.143973365888229, 37.345567318458919 ], [ -86.153279912231696, 37.344422879837552 ], [ -86.15974553648914, 37.350282364428089 ], [ -86.155094509105609, 37.338873622795326 ], [ -86.157270677881399, 37.335847069473928 ], [ -86.139281914316896, 37.315209689777134 ], [ -86.141141426955031, 37.294080687544344 ], [ -86.124237379096115, 37.276591359958068 ], [ -86.108087916075846, 37.273104801577176 ], [ -86.08722454360219, 37.261226774222727 ], [ -86.095520485251015, 37.258150620928099 ], [ -86.107773505726414, 37.237978238797133 ], [ -86.110854727150937, 37.242798363080979 ], [ -86.115972878482211, 37.24241576803928 ], [ -86.115914487988746, 37.238954446129078 ], [ -86.123473811104603, 37.238573619498062 ], [ -86.125483791552824, 37.233300850254423 ], [ -86.132221156183732, 37.233942756764478 ], [ -86.143993577982116, 37.241344849161528 ], [ -86.150602932685018, 37.252019388705293 ], [ -86.147162385146842, 37.257047750948693 ], [ -86.160574232338746, 37.25534783382939 ], [ -86.159449092445385, 37.246491914391925 ], [ -86.167127442336394, 37.245903747235609 ], [ -86.16558234004772, 37.251066589748241 ], [ -86.180099115039084, 37.250381925646941 ], [ -86.201373466755243, 37.237824476050243 ], [ -86.21718606154397, 37.240492036434034 ], [ -86.226140019138413, 37.23706996128157 ], [ -86.236131530886041, 37.249030455531184 ], [ -86.222290738145972, 37.258388352535889 ], [ -86.224381566969754, 37.264729968364492 ], [ -86.238543507423898, 37.262890811758254 ], [ -86.238718678904291, 37.268527890147404 ], [ -86.253704823631622, 37.259339271464022 ], [ -86.253305073330196, 37.255211981804948 ], [ -86.248353110326477, 37.253998240346291 ], [ -86.25072690846477, 37.246826220121541 ], [ -86.254805259854678, 37.246770800557684 ], [ -86.259148614253391, 37.236408413683193 ], [ -86.248474382889839, 37.23386050721053 ], [ -86.25048436333806, 37.225928367805317 ], [ -86.257246431639274, 37.227020964059449 ], [ -86.253347743306193, 37.220479455908276 ], [ -86.263698581167446, 37.219563814095828 ], [ -86.267821848321574, 37.21235990059418 ], [ -86.251434331751014, 37.196128901990924 ], [ -86.237737269456403, 37.202305821911068 ], [ -86.227125920162734, 37.195839094898993 ], [ -86.219187058839339, 37.187266026411457 ], [ -86.20143634882514, 37.190099969769442 ], [ -86.185569855119368, 37.186054769441981 ], [ -86.190517326546669, 37.170247606203425 ], [ -86.165032121936193, 37.168740796536021 ], [ -86.149895509398775, 37.158833043253445 ], [ -86.159803926982605, 37.141677533111626 ], [ -86.159878037993565, 37.129603334730724 ], [ -86.149868559940259, 37.13873793688456 ], [ -86.144633627622056, 37.12335958828821 ], [ -86.120480175420283, 37.130974848685149 ], [ -86.108164272875001, 37.130002616162209 ], [ -86.107881303560504, 37.126195928120964 ], [ -86.069781506572795, 37.125502968541632 ], [ -86.067832162406248, 37.130498581643451 ], [ -86.052033042346793, 37.127032126711313 ], [ -86.032469981246877, 37.119008178545357 ], [ -86.006450279042355, 37.095239338309163 ], [ -86.029501049232863, 37.08850368652768 ], [ -86.059812452707263, 37.08761690054061 ], [ -86.074625671742396, 37.069122809497244 ], [ -86.081935712366928, 37.050091871500889 ], [ -86.061418191277639, 37.040114806980277 ], [ -86.061476581771103, 37.036678277618002 ], [ -86.077664223190936, 37.044983405445841 ], [ -86.104198210895603, 37.05169603814786 ], [ -86.112098893819436, 37.055558445541351 ], [ -86.127242243721497, 37.054656936020478 ], [ -86.129995580067316, 37.045427945271939 ], [ -86.136694766298646, 37.036766119898665 ], [ -86.142073429062307, 37.019131089546498 ], [ -86.133132946197094, 37.014070751001775 ], [ -86.13901691130809, 36.999574656372282 ], [ -86.147490270225546, 36.979837376060829 ], [ -86.142870683876964, 36.975389816669477 ], [ -86.152496132146311, 36.968358231425981 ], [ -86.16682650671622, 36.93407017627311 ], [ -86.160509104480653, 36.930311101790423 ], [ -86.159714095454206, 36.92420714758638 ], [ -86.163037862005439, 36.923219697306578 ], [ -86.164998435113034, 36.920169292855761 ], [ -86.17158982351026, 36.91840255195487 ], [ -86.176337419786833, 36.914737870461707 ], [ -86.169047591256202, 36.90840461284742 ], [ -86.158317215187395, 36.906542423749279 ], [ -86.149574361684699, 36.910469668142774 ], [ -86.149136432983695, 36.915172398488338 ], [ -86.15261291313324, 36.917276771920761 ], [ -86.148505366496593, 36.929131640499953 ], [ -86.134673556909362, 36.931937543589264 ], [ -86.14179045974781, 36.913856237808993 ], [ -86.134276052396146, 36.904936989913075 ], [ -86.135187842409522, 36.902153439556102 ], [ -86.141972368592846, 36.901462025820265 ], [ -86.147312852956929, 36.897399619103325 ], [ -86.14068553194835, 36.892385068234482 ], [ -86.137449351137306, 36.894606813547227 ], [ -86.126361894743042, 36.895840689439297 ], [ -86.101952422685315, 36.867821224548777 ], [ -86.100319734656438, 36.897988699442195 ], [ -86.066239898565158, 36.899759505032669 ], [ -86.076968028845741, 36.883007045919598 ], [ -86.069855617583727, 36.877698729272147 ], [ -86.05096853873512, 36.869294487451597 ], [ -86.04349006399481, 36.877732861759164 ], [ -86.041864113330561, 36.861444543273649 ], [ -86.028800363311262, 36.869177705453389 ], [ -86.032023069393034, 36.851061758078032 ], [ -86.014476726105968, 36.835121852266909 ], [ -85.999885840103659, 36.835984622483707 ], [ -85.981739871364454, 36.83750163651515 ], [ -85.974690342172309, 36.828413481865454 ], [ -85.979395268472885, 36.808761330702268 ], [ -85.969260026279812, 36.801620872375118 ], [ -85.944468770226322, 36.81042272689762 ], [ -85.939087861674437, 36.806772642398791 ], [ -85.929707204320025, 36.790274967383283 ], [ -85.936666901983742, 36.782524832975604 ], [ -85.949746372520522, 36.756257758644125 ], [ -85.954166083718391, 36.743895574512692 ], [ -85.940127661615819, 36.743542854156665 ], [ -85.808448115693153, 36.82093148108612 ], [ -85.790497530528242, 36.827849031588805 ], [ -85.771965286216854, 36.83685097778379 ], [ -85.766189118939963, 36.836220085164982 ], [ -85.731327748551493, 36.846732485558427 ], [ -85.712829191063264, 36.844428472218326 ], [ -85.689717784591082, 36.843704185351726 ], [ -85.670087349844849, 36.846074716600071 ], [ -85.665988786361055, 36.854963104982929 ], [ -85.670628584803538, 36.860118471709931 ], [ -85.669025092021386, 36.8703455174022 ], [ -85.712505797560979, 36.873392524212598 ], [ -85.711735492204852, 36.886962444987248 ], [ -85.680112548415636, 36.898883087117547 ], [ -85.675885975003851, 36.920375769049798 ], [ -85.640384554975441, 36.93248865893144 ], [ -85.623988055252056, 36.942282408892666 ], [ -85.645035582358972, 36.983423580937938 ], [ -85.638486863937743, 36.991336314426242 ], [ -85.616956492365617, 36.997578379805425 ], [ -85.594664798590188, 36.997746980211978 ], [ -85.601595301007166, 36.982158830628784 ], [ -85.598053692999514, 36.975004074177924 ], [ -85.567178596684329, 36.982560682651247 ], [ -85.546892391780702, 36.982460219844612 ], [ -85.562590451370696, 36.954856628290067 ], [ -85.545401188409073, 36.941523151072651 ], [ -85.54391223082564, 36.936534836513644 ], [ -85.524165015092478, 36.924331026809568 ], [ -85.505807942261498, 36.918786785674392 ], [ -85.457339341106831, 36.910248799680971 ], [ -85.412053021846162, 36.913802369903117 ], [ -85.389206618382786, 36.898814841037819 ], [ -85.356519170981883, 36.907422345188387 ], [ -85.397549721584042, 36.930867614479432 ], [ -85.396682847334873, 36.941729569432141 ], [ -85.359393779891064, 36.93346342321604 ], [ -85.323054680860224, 36.933364690752775 ], [ -85.34862297963447, 36.912663952594606 ], [ -85.331296723592018, 36.895292901294269 ], [ -85.313880636021153, 36.891275069391064 ], [ -85.311493363153602, 36.903879252739706 ], [ -85.295570724742575, 36.911448305258702 ], [ -85.293594431117526, 36.919883816153572 ], [ -85.273180216285908, 36.927664918126247 ], [ -85.294317574921237, 36.949962513561722 ], [ -85.283515333629694, 36.961873310441192 ], [ -85.310547886317067, 36.9983406659018 ], [ -85.280993313469537, 36.980113657983722 ], [ -85.268300118504925, 36.962472659454129 ], [ -85.236043862440411, 36.963897440264169 ], [ -85.225728957190498, 36.942077786962514 ], [ -85.23260780647864, 36.924887583154856 ], [ -85.275037483135819, 36.897466070466642 ], [ -85.245720963838593, 36.875474695396854 ], [ -85.245968000541723, 36.860147221472957 ], [ -85.235583475857297, 36.853083438976668 ], [ -85.233840744206105, 36.840736873984632 ], [ -85.225172001714341, 36.819901345359213 ], [ -85.205638135861179, 36.80164424942673 ], [ -85.228965138001541, 36.782094946461655 ], [ -85.242893516481828, 36.772086363029068 ], [ -85.248049846212666, 36.757758359830653 ], [ -85.28891420848727, 36.754388263582861 ], [ -85.26181428215358, 36.742959782258247 ], [ -85.255831502361346, 36.71341527586123 ], [ -85.23526906550785, 36.686665305091587 ], [ -85.246259953009059, 36.682913875155769 ], [ -85.241853716540447, 36.675749090109186 ], [ -85.246758517991736, 36.677391754386321 ], [ -85.252687398866939, 36.667437968136774 ], [ -85.249116595612563, 36.663687402017999 ], [ -85.263869178366008, 36.652207588547711 ], [ -85.27618283512308, 36.626272621246081 ], [ -85.187337207735453, 36.624755032789672 ], [ -85.105783654666652, 36.622732736652431 ], [ -84.999944147891682, 36.618136411755259 ], [ -84.944563010625728, 36.612768278381843 ], [ -84.831013712924815, 36.604677517784538 ], [ -84.785716164723084, 36.603447965170467 ], [ -84.785204125011134, 36.603435345027357 ], [ -84.691197676316236, 36.601219576470235 ], [ -84.541974032894714, 36.596279391422783 ], [ -84.510762068347987, 36.596353316231017 ], [ -84.431737272803986, 36.595628489444231 ], [ -84.292381622778535, 36.591955568451858 ], [ -84.2027701816112, 36.591319055288771 ], [ -84.202974548338332, 36.591710340206177 ], [ -84.212240670494012, 36.608908687632159 ], [ -84.202188522464724, 36.619214319602783 ], [ -84.216240419296554, 36.659406993752881 ], [ -84.195311918964791, 36.662831699704448 ], [ -84.188543113298948, 36.696585991799054 ], [ -84.165849423433883, 36.713422477076854 ], [ -84.141671267561804, 36.720362334845674 ], [ -84.090377464838582, 36.677400760124499 ], [ -84.06694491065231, 36.691117076682922 ], [ -84.022785977073212, 36.691158495677769 ], [ -84.00217862445551, 36.685604549651458 ], [ -84.015188475557764, 36.656151490246273 ], [ -83.99989465784563, 36.627447740473734 ], [ -84.011375127176677, 36.589618655853485 ], [ -83.999944065186256, 36.591180211776681 ], [ -83.891697073449862, 36.586935446717128 ], [ -83.888467630003447, 36.563159366222564 ], [ -83.865958094771628, 36.532603854532006 ], [ -83.847928907019337, 36.520160606877738 ], [ -83.757996318137927, 36.557134377145672 ], [ -83.708934828895735, 36.553578691599057 ], [ -83.70376727022385, 36.546363989749516 ], [ -83.689962410095134, 36.554588948677228 ], [ -83.702559036166704, 36.560569039274554 ], [ -83.701007196513387, 36.574037430235528 ], [ -83.690732715451261, 36.582605690124836 ], [ -83.682589487400733, 36.593268247575587 ], [ -83.67945885863557, 36.59372984371911 ], [ -83.67496054485035, 36.600739995727494 ], [ -83.627603608859772, 36.598563815577862 ], [ -83.550045313017094, 36.597426119500476 ], [ -83.550357477578331, 36.604176324217171 ], [ -83.530655177609376, 36.606507387511463 ], [ -83.536045069314099, 36.621863962127001 ], [ -83.540756732979304, 36.630803580479565 ], [ -83.535315188145745, 36.63287432398657 ], [ -83.528481254621809, 36.62354923158604 ], [ -83.52007302356246, 36.622660639553999 ], [ -83.516347260921563, 36.608706779389813 ], [ -83.506739778957908, 36.602815152593742 ], [ -83.506443334914152, 36.623271660327262 ], [ -83.488182830976214, 36.62475863754824 ], [ -83.474110722050483, 36.616333856598978 ], [ -83.473582961821066, 36.59723860538292 ], [ -83.434688155806896, 36.596912257610803 ], [ -83.434737563147522, 36.612454614976471 ], [ -83.426506749356776, 36.614990925614599 ], [ -83.436828391971318, 36.625868895167741 ], [ -83.408329339582622, 36.628586795998402 ], [ -83.416261463541403, 36.636107384041253 ], [ -83.394764778792421, 36.64370111749141 ], [ -83.359229671940852, 36.672607757249772 ], [ -83.352777522412666, 36.674596322305511 ], [ -83.353929611764556, 36.67908301352481 ], [ -83.356851382226154, 36.678504855637861 ], [ -83.357774401180592, 36.683214644648409 ], [ -83.342296428835198, 36.690740703055106 ], [ -83.328466865036177, 36.695206644559327 ], [ -83.330476845484412, 36.703878473827658 ], [ -83.29498890018526, 36.713175835057427 ], [ -83.251519423586714, 36.72339011265381 ], [ -83.194608904549526, 36.738502015218792 ], [ -83.135052847000622, 36.742572864818875 ], [ -83.133411175818893, 36.749168190662665 ], [ -83.127846112633762, 36.750076915547695 ], [ -83.125407186637389, 36.761565508814023 ], [ -83.132144551268283, 36.764107701086594 ], [ -83.129004939350281, 36.771075358681465 ], [ -83.132014295552082, 36.772275250263597 ], [ -83.128169506136047, 36.776770629102721 ], [ -83.132243365949535, 36.784738980129923 ], [ -83.121661211902619, 36.786800183913371 ], [ -83.110623162848995, 36.80062464369766 ], [ -83.09189104338688, 36.793361133601849 ], [ -83.06462268293744, 36.763402444585289 ], [ -83.096268084608766, 36.745171472874645 ], [ -83.090979253373504, 36.735516228337012 ], [ -83.098260098751297, 36.732361138674939 ], [ -83.127271190851928, 36.726631970717349 ], [ -83.157009918332719, 36.724524148527152 ], [ -83.152603681864107, 36.707056339044442 ], [ -83.169990574188247, 36.702733329849508 ], [ -83.143070310911384, 36.679653962687787 ], [ -83.13985658798245, 36.680387004769095 ], [ -83.136265572634173, 36.681624335137769 ], [ -83.125638502823051, 36.676719923345253 ], [ -83.096894659519435, 36.683643284168333 ], [ -83.101770265723985, 36.690488585719059 ], [ -83.111721353283826, 36.713850948191613 ], [ -83.082463224480051, 36.729155521186591 ], [ -83.069601595399675, 36.731626792303395 ], [ -83.030336234330818, 36.746247601969621 ], [ -83.011350340800945, 36.745146279036128 ], [ -83.01442257907263, 36.727837957393305 ], [ -83.012789891043752, 36.723865329724703 ], [ -83.016158573359192, 36.722792487011809 ], [ -83.019127505373206, 36.727488763199354 ], [ -83.023127254175748, 36.716320911555194 ], [ -82.999869871469897, 36.725748168456249 ], [ -82.996281101909844, 36.726918169269368 ], [ -82.983801256825217, 36.714468446477134 ], [ -82.983471125958289, 36.691149491550348 ], [ -82.958275628026954, 36.699382425331535 ], [ -82.949800023321288, 36.704224174317275 ], [ -82.949409256172686, 36.735581020605103 ], [ -82.959811747162789, 36.730672851479945 ], [ -82.986884724037949, 36.727742559137134 ], [ -82.997201875076058, 36.739283087981242 ], [ -82.99985639674064, 36.744885342364988 ], [ -83.007072114260325, 36.758015654208208 ], [ -82.999917033022314, 36.761515131894875 ], [ -82.978557341354147, 36.771330809437245 ], [ -82.972482484245305, 36.7704457229026 ], [ -82.959328902697578, 36.764780567314979 ], [ -82.951628094924473, 36.755289729353031 ], [ -82.950945375308535, 36.760757674942866 ], [ -82.945696968261061, 36.760527377759551 ], [ -82.944598777826229, 36.771591656161704 ], [ -82.93197520229613, 36.777130391926519 ], [ -82.931631596699972, 36.784719195182724 ], [ -82.93579079646544, 36.791616637669669 ], [ -82.978065513736098, 36.78153914818953 ], [ -82.990859769170171, 36.789370315845233 ], [ -82.999896820928413, 36.787001624939066 ], [ -83.052046268959771, 36.776272354802998 ], [ -83.044924874544904, 36.780967157409712 ], [ -83.038596243368289, 36.783172356227418 ], [ -83.034358441015456, 36.78685054421944 ], [ -83.036694060754172, 36.814157140637896 ], [ -83.012769678949851, 36.84643235670832 ], [ -83.007134996330208, 36.847106297089532 ], [ -82.999896820928413, 36.854882240762066 ], [ -82.987666258335125, 36.85895769099394 ], [ -82.978332762533128, 36.859604567871301 ], [ -82.969722410534843, 36.857865175390842 ], [ -82.964361714076858, 36.860664715357949 ], [ -82.942927911397774, 36.845318095581618 ], [ -82.922192548852081, 36.856562401995582 ], [ -82.902658682998904, 36.862003355157491 ], [ -82.892714332803692, 36.855938859837039 ], [ -82.890257440501628, 36.857081717086537 ], [ -82.895031986236717, 36.864570962380547 ], [ -82.889280522630145, 36.866435972173285 ], [ -82.842642238866873, 36.832883996661749 ], [ -82.818333827278593, 36.840602075155793 ], [ -82.801252362151075, 36.825618153916309 ], [ -82.805434019798639, 36.810690632648793 ], [ -82.851441237074823, 36.772581066704255 ], [ -82.84496887545275, 36.764940687018424 ], [ -82.832897763822388, 36.759170769380233 ], [ -82.820063084200527, 36.75863639583207 ], [ -82.810832894656201, 36.752880398956506 ], [ -82.804681680748189, 36.748272051424706 ], [ -82.800583117264395, 36.743945963002652 ], [ -82.799518613652722, 36.735980571716652 ], [ -82.799785862449738, 36.730663851981788 ], [ -82.801640883511453, 36.7267111704234 ], [ -82.802566148254087, 36.72290949239818 ], [ -82.802274195786751, 36.719300244199154 ], [ -82.801164776410872, 36.716524337942857 ], [ -82.795442508051025, 36.712045232309613 ], [ -82.797825289342157, 36.708968396324266 ], [ -82.822773750570363, 36.704069329498559 ], [ -82.825374373317885, 36.702934991662019 ], [ -82.84383924398297, 36.698566734365535 ], [ -82.840524460584561, 36.690207653999444 ], [ -82.818782984920659, 36.669687859812115 ], [ -82.799772387720481, 36.656320844680828 ], [ -82.792594848600373, 36.644948047253614 ], [ -82.796255483383149, 36.636062331182131 ], [ -82.792374761355759, 36.629913269821671 ], [ -82.767760922570886, 36.639545740518933 ], [ -82.758303908417304, 36.6234284701872 ], [ -82.832057839031734, 36.593652310184822 ], [ -82.83148740882632, 36.593641491545938 ], [ -82.733836045866113, 36.593457574452835 ], [ -82.75904726431493, 36.57315728570601 ], [ -82.76241370084216, 36.553118659446177 ], [ -82.766878327804235, 36.545566524507912 ], [ -82.763904904213803, 36.539606925392015 ], [ -82.750448141257678, 36.543630562216769 ], [ -82.733065740509971, 36.553549826917035 ], [ -82.726337359031916, 36.544406396356266 ], [ -82.705491952863923, 36.544922411960748 ], [ -82.705588521756965, 36.557213751313228 ], [ -82.690490087619139, 36.557406774516814 ], [ -82.690013980518543, 36.545681995097517 ], [ -82.672222846316572, 36.546095161888196 ], [ -82.671418854137272, 36.532067906726795 ], [ -82.67750943176361, 36.52822593645417 ], [ -82.681205999157754, 36.524087800109129 ], [ -82.680559212153184, 36.520812144914736 ], [ -82.679438563836243, 36.518557908249285 ], [ -82.680011239829867, 36.514856052891218 ], [ -82.675364704022769, 36.502962351025346 ], [ -82.677385913412039, 36.500039639515336 ], [ -82.678479612270465, 36.492009287292518 ], [ -82.699998754901529, 36.490142399977984 ], [ -82.706280224525742, 36.482984979876612 ], [ -82.732710905972752, 36.463629189451247 ], [ -82.738599362660139, 36.45726228498755 ], [ -82.738830678845815, 36.447435454772261 ], [ -82.804957912698057, 36.407596951444823 ], [ -82.79789266298846, 36.399831782810907 ], [ -82.725921888213009, 36.440776347205912 ], [ -82.70203568480828, 36.410353255077652 ], [ -82.681462019013736, 36.414119744008545 ], [ -82.672622596617984, 36.42327675537566 ], [ -82.670731642944929, 36.43191592149568 ], [ -82.656169952189344, 36.433377672324966 ], [ -82.651718799956527, 36.436924426713304 ], [ -82.635564845359852, 36.430403549575942 ], [ -82.629806644388651, 36.434884565871172 ], [ -82.619168345636467, 36.424556157076445 ], [ -82.6155997881703, 36.418117372188362 ], [ -82.610268286959041, 36.411524428590049 ], [ -82.602643835985077, 36.407611410997724 ], [ -82.609623745742695, 36.399275032343326 ], [ -82.613464043582297, 36.387710712699636 ], [ -82.596696988804212, 36.384541387474833 ], [ -82.583878029699832, 36.392210462518989 ], [ -82.566843726124716, 36.397543295976966 ], [ -82.557501247169867, 36.401417053690814 ], [ -82.563519959573469, 36.406487172730557 ], [ -82.557779724907945, 36.426290905371673 ], [ -82.539180106950241, 36.443981317304022 ], [ -82.53743063793442, 36.448741555596079 ], [ -82.528624902361841, 36.454737052994766 ], [ -82.530217166202945, 36.457468201567167 ], [ -82.537302628006444, 36.458907796065326 ], [ -82.537823650871232, 36.468812637621028 ], [ -82.522064954999564, 36.485772913352555 ], [ -82.515886791633022, 36.489783100254193 ], [ -82.513319855708659, 36.497436365648547 ], [ -82.505753795228159, 36.498952846504174 ], [ -82.505774007322046, 36.500091992946395 ], [ -82.508985484462784, 36.508240643695686 ], [ -82.487937957355868, 36.505283833243219 ], [ -82.480645883037027, 36.500115461714344 ], [ -82.473553683868886, 36.495121869759885 ], [ -82.483161165832556, 36.495605717052932 ], [ -82.484196474197503, 36.492659256841684 ], [ -82.474973022017807, 36.491447781429528 ], [ -82.478660606259112, 36.486166538364493 ], [ -82.473578387539206, 36.480547261535243 ], [ -82.481546444109355, 36.477789838797918 ], [ -82.480609950425659, 36.473078337416339 ], [ -82.463472340592872, 36.474958277062981 ], [ -82.461363545463399, 36.472957340699509 ], [ -82.469681944994349, 36.468666349933997 ], [ -82.470173772612398, 36.463594872785961 ], [ -82.470304028328599, 36.462112017109504 ], [ -82.466225676938691, 36.46822929124928 ], [ -82.43960859507024, 36.480381132753195 ], [ -82.423733118211629, 36.481040228541872 ], [ -82.41379775116927, 36.478311716116934 ], [ -82.41250417716013, 36.482047821677916 ], [ -82.419881591430965, 36.483391258810393 ], [ -82.418927131441592, 36.494455672085323 ], [ -82.415430439198147, 36.50007755062412 ], [ -82.413332873009736, 36.535225794808539 ], [ -82.393334128997026, 36.535886228240017 ], [ -82.379484353104118, 36.53830416043423 ], [ -82.374777181015318, 36.539152223218927 ], [ -82.369872379564029, 36.539700752491747 ], [ -82.365277496885767, 36.539343487157247 ], [ -82.367489598272911, 36.542381994184289 ], [ -82.367768076010975, 36.545759576803036 ], [ -82.3464465627424, 36.565805522799849 ], [ -82.333571458932767, 36.563563420534258 ], [ -82.294202791606224, 36.572807389397418 ], [ -82.267900120087205, 36.587671174633286 ], [ -82.263422018395872, 36.591203652906636 ], [ -82.251950532217663, 36.590880885952828 ], [ -82.243045981963832, 36.595082160276441 ], [ -82.242322838160106, 36.595404909658342 ], [ -82.268751273818907, 36.595642913924294 ], [ -82.27549313002622, 36.592235055575813 ], [ -82.280240726302793, 36.590823184455722 ], [ -82.293560496178074, 36.595825022753246 ], [ -82.325836964336489, 36.595412121919608 ], [ -82.326820619572601, 36.597047484755684 ], [ -82.32994900254954, 36.596901439428983 ], [ -82.333218870183742, 36.600024224938423 ], [ -82.333032469762287, 36.606024234008338 ], [ -82.312986564197161, 36.618951152856653 ], [ -82.318982818718666, 36.626324889199822 ], [ -82.310475772978052, 36.630994617458548 ], [ -82.323094856931718, 36.679365786983773 ], [ -82.328266907180037, 36.687796281193599 ], [ -82.347178689698964, 36.686776962707874 ], [ -82.372782921084578, 36.675417671134674 ], [ -82.39820748941338, 36.668282811073972 ], [ -82.398086216850004, 36.662565078934549 ], [ -82.405623082083778, 36.658767434201202 ], [ -82.403386277026328, 36.658133274131963 ], [ -82.404989769808481, 36.655436233897703 ], [ -82.403359327567799, 36.650189616455769 ], [ -82.406361946404971, 36.649528358740277 ], [ -82.409326386842565, 36.655207422529472 ], [ -82.412885961155894, 36.651476079774788 ], [ -82.415493321268045, 36.651949939698781 ], [ -82.415005985226401, 36.661936354678652 ], [ -82.455149449485504, 36.653533655699654 ], [ -82.455016947981093, 36.648041859496047 ], [ -82.452658870360281, 36.643290274940519 ], [ -82.445717139002241, 36.643164138629956 ], [ -82.438088196451858, 36.639008732690293 ], [ -82.434476969009708, 36.640513426383812 ], [ -82.428188762020852, 36.639943988873753 ], [ -82.419277474402392, 36.642619948179401 ], [ -82.416185024036807, 36.645337258190047 ], [ -82.413687707546956, 36.64229379245748 ], [ -82.411295943102999, 36.635145049241963 ], [ -82.427317396195264, 36.62860121431487 ], [ -82.438631677198757, 36.622276721369289 ], [ -82.449692184134463, 36.622458767319664 ], [ -82.449766295145423, 36.630983804057294 ], [ -82.454504908269143, 36.638138339568016 ], [ -82.456937096900887, 36.642659591322179 ], [ -82.461338841793079, 36.644375038684679 ], [ -82.460631418506836, 36.647960776893882 ], [ -82.465742832473481, 36.649470701122652 ], [ -82.469244016293331, 36.647108503488894 ], [ -82.474939335194648, 36.646569746513414 ], [ -82.471840147464434, 36.652946297251425 ], [ -82.47659448110565, 36.651301309408957 ], [ -82.478197973887802, 36.653627344362945 ], [ -82.474874207336555, 36.660282551170823 ], [ -82.470200722070928, 36.656672163862424 ], [ -82.467472089395415, 36.65740542488679 ], [ -82.478851498257001, 36.672274523476311 ], [ -82.460166540347302, 36.672928380815442 ], [ -82.399483097116828, 36.688554458089563 ], [ -82.376762457793234, 36.695591999934685 ], [ -82.332015127703031, 36.709558927939703 ], [ -82.307542773575406, 36.727288965807183 ], [ -82.293221382158322, 36.713505291008019 ], [ -82.298440593959057, 36.70777291599056 ], [ -82.304279643305833, 36.699297795545434 ], [ -82.302094491377204, 36.697128000064126 ], [ -82.294243215793998, 36.701480133868536 ], [ -82.287977466687266, 36.703532771783102 ], [ -82.286236980824285, 36.701143423994708 ], [ -82.290858812961076, 36.697835666233118 ], [ -82.294573346660925, 36.695426333374492 ], [ -82.279167239538282, 36.689163155270919 ], [ -82.273211409204563, 36.697115395264149 ], [ -82.25061653402075, 36.707274193546539 ], [ -82.249181475354362, 36.699695734792499 ], [ -82.264232747939786, 36.694745656152378 ], [ -82.244231758138866, 36.687776471245755 ], [ -82.239454966615568, 36.697932902296913 ], [ -82.217477683189571, 36.697473730914744 ], [ -82.195177006261304, 36.683284884061123 ], [ -82.189845505050059, 36.681986345062931 ], [ -82.185463972251767, 36.678265306081329 ], [ -82.175822803464953, 36.675010600223175 ], [ -82.153007841036541, 36.680457246763943 ], [ -82.140229306119934, 36.685404643337577 ], [ -82.136310405692953, 36.68242939966764 ], [ -82.151660368110342, 36.671047850503427 ], [ -82.16054919784672, 36.662622726746832 ], [ -82.152329612997008, 36.657745929474423 ], [ -82.135465989325894, 36.664975441247428 ], [ -82.134556445100714, 36.667863092820959 ], [ -82.12817166921883, 36.671157729496606 ], [ -82.118784274499788, 36.676199385341285 ], [ -82.112224327137511, 36.681491057422811 ], [ -82.106475109319149, 36.687900733561463 ], [ -82.09976918572319, 36.693301448014964 ], [ -82.083637689008611, 36.702942193859826 ], [ -82.076898078589494, 36.684388895120556 ], [ -82.06652927442255, 36.689173960502806 ], [ -82.063807379111665, 36.686517628640409 ], [ -82.069886727796941, 36.682413190397817 ], [ -82.066185668826378, 36.678011346714335 ], [ -82.056133520797076, 36.682116019845544 ], [ -82.054743377894894, 36.672296138683762 ], [ -82.046341884200174, 36.665188010684417 ], [ -82.04827775363745, 36.663181187693318 ], [ -82.022785811662345, 36.646807592866892 ], [ -82.045210006942185, 36.639030357238958 ], [ -82.025029354084438, 36.62315630574389 ], [ -82.008709211160195, 36.623233809623621 ], [ -81.999955128716451, 36.616281581870659 ], [ -81.993255942485135, 36.609445905202747 ], [ -81.999815889847426, 36.60124301455042 ], [ -82.005679642864507, 36.598675600975056 ], [ -82.008105094131622, 36.595143464732175 ], [ -82.013825116703259, 36.591147754815765 ], [ -82.021959361600963, 36.590018965348932 ], [ -82.023955867319913, 36.588199523932815 ], [ -82.023971587837394, 36.583281948827931 ], [ -82.026787806253097, 36.58079509099435 ], [ -82.032400030990644, 36.578906901052576 ], [ -82.033538645613262, 36.577281974745667 ], [ -82.03129285740296, 36.575265647945187 ], [ -82.019619250285828, 36.570228207902566 ], [ -82.014622371517916, 36.569447221970997 ], [ -82.012567475305488, 36.571047062268846 ], [ -81.999860805611632, 36.566943684968081 ], [ -81.976291258344531, 36.563303671576492 ], [ -81.950006553131203, 36.537854863827953 ], [ -81.930564764594649, 36.554013464567625 ], [ -81.931523716160441, 36.56193817137239 ], [ -81.92840880791276, 36.568116100727728 ], [ -81.903541195060114, 36.581705806024218 ], [ -81.898187235966773, 36.580043066722915 ], [ -81.888153054243148, 36.581316273781738 ], [ -81.87605499315427, 36.587175280362196 ], [ -81.874033783765, 36.601414292612553 ], [ -81.860523121891845, 36.606505584705523 ], [ -81.850616950096224, 36.603534503238997 ], [ -81.829922011738304, 36.608465209905312 ], [ -81.826681339350841, 36.614529456682185 ], [ -81.790420842907366, 36.613646168601562 ], [ -81.646775737400233, 36.611800244109745 ], [ -81.679373353272723, 36.586412498591265 ], [ -81.677475662235025, 36.570262477312227 ], [ -81.691372599680349, 36.568078222958285 ], [ -81.690132924588269, 36.560635782772053 ], [ -81.691404040715284, 36.551612260486522 ], [ -81.702327554570175, 36.53631207849984 ], [ -81.708274401751055, 36.536099153663073 ], [ -81.707937533519512, 36.524109456872047 ], [ -81.702830611129286, 36.521127985478977 ], [ -81.700173843676509, 36.500129904029542 ], [ -81.697070164369876, 36.49651563063987 ], [ -81.694974843969661, 36.467384063331309 ], [ -81.716583818129152, 36.456451257352143 ], [ -81.714014636416579, 36.446537610608907 ], [ -81.717720186963561, 36.444635302831209 ], [ -81.714998291652691, 36.436510677165671 ], [ -81.72170646103686, 36.433970315003755 ], [ -81.717650567529049, 36.428676120990126 ], [ -81.720318563922888, 36.422765350210938 ], [ -81.73527326761527, 36.412558227573861 ], [ -81.741635585615043, 36.412585337501945 ], [ -81.73901699656183, 36.394969119675835 ], [ -81.731796787465726, 36.394168287611386 ], [ -81.728010388543169, 36.390339364757651 ], [ -81.7345164369884, 36.379245632269736 ], [ -81.722377951711735, 36.360222056232772 ], [ -81.723431226382374, 36.354597275569247 ], [ -81.722083753456175, 36.338646732483006 ], [ -81.736149125017292, 36.340506410632173 ], [ -81.753816740867705, 36.336743591753311 ], [ -81.759467144004816, 36.339824413198578 ], [ -81.764675126864503, 36.338505626686555 ], [ -81.779243554984703, 36.34780901673372 ], [ -81.789973931053524, 36.348056826625694 ], [ -81.793692956329764, 36.361399410639933 ], [ -81.810563317365535, 36.351855273711827 ], [ -81.833885827929493, 36.346345656109492 ], [ -81.853579144745595, 36.336065179585795 ], [ -81.864877705231621, 36.329215599400193 ], [ -81.866600224788911, 36.326061984843989 ], [ -81.875185873116891, 36.317832675302895 ], [ -81.876180757294051, 36.315556252891142 ], [ -81.89403701935413, 36.307186481385678 ], [ -81.908037263057139, 36.301550630730723 ], [ -81.917986104828756, 36.286979508520176 ], [ -81.898088421285507, 36.27844554077177 ], [ -81.894423294926298, 36.284803562100954 ], [ -81.891544194440698, 36.283541775030564 ], [ -81.884362163744157, 36.263670917632282 ], [ -81.888341700452813, 36.257379990682118 ], [ -81.881442639070769, 36.251563058232641 ], [ -81.881285433896053, 36.247917294193449 ], [ -81.891973139988878, 36.23609501066003 ], [ -81.891948436318557, 36.224582550903442 ], [ -81.875794481721869, 36.207188367266411 ], [ -81.861657244938044, 36.199637000926529 ], [ -81.848447518685063, 36.201295210742344 ], [ -81.838199987081481, 36.18669450867489 ], [ -81.824954328217132, 36.192614138320472 ], [ -81.813271737947161, 36.201938550448467 ], [ -81.800917657002302, 36.20154529835488 ], [ -81.815456889875776, 36.178831185674717 ], [ -81.829560439836456, 36.168709938261046 ], [ -81.843679710314589, 36.124716371568155 ], [ -81.836592002722895, 36.115961504108867 ], [ -81.823981901922068, 36.093741601455804 ], [ -81.841719137207008, 36.075977127884173 ], [ -81.812719274047424, 36.033030352980468 ], [ -81.863885066842656, 36.01359911011086 ], [ -81.865140462452217, 36.007146398374772 ], [ -81.868336219075474, 36.00014991400662 ], [ -81.874164039481201, 35.992024419835275 ], [ -81.881451622223622, 35.976023543995872 ], [ -81.879511261209927, 35.969929455698505 ], [ -81.882693543103912, 35.956629151213825 ], [ -81.868958302409723, 35.958505180610182 ], [ -81.867172900782535, 35.949889984329651 ], [ -81.87947308281035, 35.938524632591609 ], [ -81.910379620160469, 35.938099150155061 ], [ -81.912915115049898, 35.944186603882514 ], [ -81.900340946860439, 35.954182247465532 ], [ -81.912405321126172, 35.963111443597853 ], [ -81.924626900566608, 35.952317023268037 ], [ -81.944540304627324, 35.947453780378325 ], [ -81.948313228820638, 35.961013754937639 ], [ -81.956912351877861, 35.963727651775173 ], [ -81.977993565807935, 35.944253875990476 ], [ -81.99204321685157, 35.947357421513559 ], [ -81.991894994829693, 35.952924225843574 ], [ -81.960054209584086, 35.985702598938914 ], [ -81.999838347729522, 36.000126294597223 ], [ -81.999833856153103, 36.068725354057271 ], [ -82.013162609181222, 36.055118532813111 ], [ -82.02499117568486, 36.060819342061293 ], [ -82.071097207642296, 36.082208218133609 ], [ -82.058956476577421, 36.11046426915324 ], [ -82.086837937208287, 36.131897681633312 ], [ -82.104404492589239, 36.120690995317801 ], [ -82.140813211054606, 36.135920669462614 ], [ -82.148657749273184, 36.149682153718992 ], [ -82.166657741778735, 36.145153898045962 ], [ -82.172440646420242, 36.146733467460706 ], [ -82.176959172299362, 36.142382774052109 ], [ -82.183786368458669, 36.143499940528301 ], [ -82.187545817922711, 36.151056718653251 ], [ -82.193515122985687, 36.148633986432102 ], [ -82.202711625706854, 36.156643587511049 ], [ -82.213680055325952, 36.159015302417536 ], [ -82.221827774952928, 36.155829427245095 ], [ -82.23643213568451, 36.1645381463657 ], [ -82.240047854703079, 36.143142666616122 ], [ -82.257892887822109, 36.146171282221864 ], [ -82.349911813950897, 36.183750839805036 ], [ -82.368524906637845, 36.142074462320885 ], [ -82.394302063715671, 36.130491945200596 ], [ -82.42725675991359, 36.115783711772131 ], [ -82.431180151916976, 36.101027359192834 ], [ -82.439929742784301, 36.092061153994194 ], [ -82.457377271390115, 36.103046927863375 ], [ -82.475934219371823, 36.090112080293345 ], [ -82.48873970374693, 36.081994049616881 ], [ -82.483646256085976, 36.063221183568388 ], [ -82.508841754017325, 36.061770647088444 ], [ -82.512940317501119, 36.051080512348562 ], [ -82.521885291942738, 36.047252916822501 ], [ -82.51756439542612, 36.056685388738714 ], [ -82.515796960104623, 36.069387934362716 ], [ -82.577960377765677, 36.078674363007806 ], [ -82.602423748740478, 36.039911329311714 ], [ -82.618133037271505, 36.048936137591511 ], [ -82.617589556524621, 36.055305540432045 ], [ -82.635214502399037, 36.066087684525769 ], [ -82.655323290034062, 36.055915581614386 ], [ -82.659599270786472, 36.056353138002578 ], [ -82.684529765709001, 36.045115701161876 ], [ -82.688879857472344, 36.038289659559332 ], [ -82.715164562685686, 36.027865139669807 ], [ -82.715544100893226, 36.023106450756899 ], [ -82.750573905397474, 36.008855909753933 ], [ -82.750573905397474, 36.005981874711217 ], [ -82.764178890375462, 36.003990699239395 ], [ -82.776124237866043, 36.000119027085212 ], [ -82.784801963510631, 35.98911342870143 ], [ -82.785522861526132, 35.977922738698055 ], [ -82.781314254420039, 35.974438726453997 ], [ -82.776571149719885, 35.974531417346874 ], [ -82.775086683712885, 35.971797899017169 ], [ -82.77800171680984, 35.967024920018353 ], [ -82.783667840464432, 35.964721936246576 ], [ -82.787308263153321, 35.952655166595527 ], [ -82.800439386818937, 35.9442938755951 ], [ -82.805910126899221, 35.937248178410677 ], [ -82.802539198795571, 35.929676308480047 ], [ -82.822108997260116, 35.921956400622093 ], [ -82.828702631445552, 35.933136837581003 ], [ -82.833054968997104, 35.933480518224357 ], [ -82.841391334833745, 35.942235687839656 ], [ -82.851540051756089, 35.949709998697173 ], [ -82.86082189442925, 35.947753764770958 ], [ -82.873833991319714, 35.952469733337097 ], [ -82.889235606865938, 35.94858826081763 ], [ -82.892844588519893, 35.945248405607664 ], [ -82.898829614100336, 35.945272041442621 ], [ -82.899563986845109, 35.929499913817125 ], [ -82.904527178789863, 35.926144703288728 ], [ -82.913285752810026, 35.929781781389451 ], [ -82.92004557532303, 35.929039831040356 ], [ -82.920319561484689, 35.927021254412082 ], [ -82.913925802449967, 35.924573433802102 ], [ -82.914350256421713, 35.91521973341397 ], [ -82.907040215797181, 35.907260123771053 ], [ -82.900920442924132, 35.893190610579111 ], [ -82.907112081019918, 35.884482777909746 ], [ -82.903965731737301, 35.880508806035486 ], [ -82.896074031966307, 35.880849076084701 ], [ -82.900592557845428, 35.873168079143518 ], [ -82.911507088547481, 35.868532916882849 ], [ -82.920085999510817, 35.868871418475173 ], [ -82.92166254283444, 35.862483322026925 ], [ -82.918871028089043, 35.859398287669443 ], [ -82.920708082845067, 35.850189792690401 ], [ -82.916580324114534, 35.841757593922878 ], [ -82.933859418604584, 35.836978585884737 ], [ -82.935909823240578, 35.825773641862952 ], [ -82.945202894854802, 35.82532388163937 ], [ -82.962086730619816, 35.799579511629346 ], [ -82.960438322073458, 35.791143756575948 ], [ -82.971685229430634, 35.788400258239307 ], [ -82.985009490882348, 35.77786259544682 ], [ -82.993096574227636, 35.773642766215772 ], [ -82.999838430434949, 35.774271381915725 ], [ -83.015873358256485, 35.782450221307464 ], [ -83.020156076373524, 35.780549977899646 ], [ -83.033974411231497, 35.787859198582055 ], [ -83.044963052944482, 35.785521851408951 ], [ -83.051960929007777, 35.789965120488255 ], [ -83.061974898637487, 35.786930097648266 ], [ -83.078685808710333, 35.789478723066168 ], [ -83.094684803920501, 35.779655408471257 ], [ -83.097074322576248, 35.776177241461426 ], [ -83.117180864423062, 35.769940210019328 ], [ -83.121003195956987, 35.766474373765831 ], [ -83.127646237483049, 35.768254688118894 ], [ -83.136948292250111, 35.765435686801673 ], [ -83.162680533563716, 35.762815219768257 ], [ -83.170435240253866, 35.745902202197307 ], [ -83.177091756509199, 35.744750236643803 ], [ -83.18615800351418, 35.730228937801584 ], [ -83.199062302570553, 35.724783223818299 ], [ -83.206239841690675, 35.726380331516516 ], [ -83.213421872387201, 35.72378957330514 ], [ -83.217922431960645, 35.725842496312772 ], [ -83.240858666952434, 35.727051253053148 ], [ -83.243084243068836, 35.722629994833873 ], [ -83.250145001202014, 35.720378249438035 ], [ -83.255840320103331, 35.715046737812031 ], [ -83.276730642035531, 35.713392875638135 ], [ -83.274907062008779, 35.719557759588284 ], [ -83.276214110747162, 35.729455949852571 ], [ -83.280984164905831, 35.732631715644125 ], [ -83.279007871280768, 35.757313415985962 ], [ -83.298011731116318, 35.761107678457591 ], [ -83.371612948132437, 35.755024378595287 ], [ -83.41337562569116, 35.736631323144699 ], [ -83.469664061394099, 35.723083982755206 ], [ -83.481229870677126, 35.716983189921869 ], [ -83.496056564441517, 35.713670041263008 ], [ -83.498648204036215, 35.7048750331113 ], [ -83.502816386954521, 35.695885725462041 ], [ -83.522974581930171, 35.695739816391729 ], [ -83.527753619241679, 35.684234045823466 ], [ -83.561130523623135, 35.668143613393589 ], [ -83.567414239035557, 35.663376063070054 ], [ -83.557328404183096, 35.65692947364083 ], [ -83.560834079579379, 35.648688467409208 ], [ -83.585009989663249, 35.650411192677907 ], [ -83.682344696485814, 35.638601384462547 ], [ -83.757295632216326, 35.641813620713222 ], [ -83.770276288071855, 35.624982624109641 ], [ -83.780227375631682, 35.627633179890182 ], [ -83.805133166883891, 35.646476608888129 ], [ -83.81884370390776, 35.655361996088764 ], [ -83.814949507151113, 35.662394419585119 ], [ -83.817071777009843, 35.669063154066649 ], [ -83.801539905747418, 35.690213313823477 ], [ -83.82228425144595, 35.703749829357911 ], [ -83.865360715107684, 35.681869940713653 ], [ -83.871056034009001, 35.66156968375941 ], [ -83.880789280112438, 35.664093129586227 ], [ -83.894192144151503, 35.658250583331515 ], [ -83.934890318098539, 35.615659344571633 ], [ -83.953067727872707, 35.594337866302105 ], [ -83.973976016110569, 35.589803329736689 ], [ -83.99989241205742, 35.558280931591213 ], [ -84.004186359115522, 35.553079283777556 ], [ -83.99989465784563, 35.55127223966889 ], [ -83.994228534191052, 35.550455493527174 ], [ -83.997392849779374, 35.537903598851173 ], [ -83.993060724321694, 35.52709339796796 ], [ -83.999899149422049, 35.524730128782494 ], [ -84.006829651839041, 35.522458181039148 ], [ -84.010766518571685, 35.512475836913119 ], [ -83.999903640998483, 35.504731856318699 ], [ -83.993561535092596, 35.500109974775924 ], [ -83.989395597962499, 35.494842387577471 ], [ -83.989065467095571, 35.48913925455048 ], [ -83.982442637663397, 35.486932130345636 ], [ -83.979572520330635, 35.492344688211745 ], [ -83.976336339519605, 35.499868635047442 ], [ -83.975024799204789, 35.502216181627894 ], [ -83.971750439994182, 35.502386211542607 ], [ -83.970153684576658, 35.500122773074608 ], [ -83.970111014600661, 35.500040498261747 ], [ -83.960840400868534, 35.490773986838917 ], [ -83.95249056030265, 35.489221540527652 ], [ -83.944515766367886, 35.490828843050402 ], [ -83.938351077730616, 35.486895557768733 ], [ -83.944098049760768, 35.480290277457293 ], [ -83.96454819720374, 35.472426140773742 ], [ -83.965309519407029, 35.466392180493173 ], [ -83.96126485484028, 35.463747264648447 ], [ -83.961651130412463, 35.459229122854509 ], [ -83.964732351836986, 35.45482231825595 ], [ -83.970746572664169, 35.455890656687579 ], [ -83.972659984219348, 35.448104632432631 ], [ -83.9793007799572, 35.447859477518598 ], [ -83.983886679482623, 35.440735022741102 ], [ -83.992908010723397, 35.438382021144434 ], [ -83.99816989250013, 35.433794751111812 ], [ -84.000202330830447, 35.425009225710554 ], [ -84.015269323933339, 35.411932554633808 ], [ -84.022864579660578, 35.411755012096847 ], [ -84.021279053184102, 35.403992177137098 ], [ -84.007925596485663, 35.390329895559333 ], [ -84.011092157862194, 35.384850053378386 ], [ -84.007885172297875, 35.371499504663028 ], [ -84.022985852223925, 35.354714341617381 ], [ -84.037940555916308, 35.349459218253578 ], [ -84.03410474965311, 35.343267661762717 ], [ -84.036709863977066, 35.337260665766095 ], [ -84.031811799890392, 35.337104943249777 ], [ -84.029060709332796, 35.332817876138698 ], [ -84.03324236698036, 35.324869711711017 ], [ -84.035575740930867, 35.31167601269064 ], [ -84.027605438572508, 35.309931351365542 ], [ -84.02193482334151, 35.301764663226123 ], [ -84.023387848313575, 35.296531758081322 ], [ -84.036723338706324, 35.28845537423944 ], [ -84.040763511696653, 35.280185686137337 ], [ -84.052594323988515, 35.269381205665006 ], [ -84.081865927521548, 35.26144331208333 ], [ -84.082420637209495, 35.256273819862166 ], [ -84.098010898965384, 35.247533162159115 ], [ -84.1067784561384, 35.251219538508138 ], [ -84.113920062647139, 35.249066421637153 ], [ -84.124800906526033, 35.249576279010583 ], [ -84.127210637275695, 35.240590948720914 ], [ -84.137458168879292, 35.245513837196171 ], [ -84.158184548272132, 35.246023716910088 ], [ -84.160852544665971, 35.242988234650298 ], [ -84.16621997848857, 35.235425629724347 ], [ -84.173143743540919, 35.221232149025852 ], [ -84.169074375303865, 35.216258248185078 ], [ -84.15238367732492, 35.221722000307594 ], [ -84.10748138784821, 35.212928077836459 ], [ -84.088324814414364, 35.230491122210914 ], [ -84.069165995192307, 35.208234415728043 ], [ -83.999775631070491, 35.219566265613864 ], [ -83.992872078112029, 35.22045975579239 ], [ -83.970950939391301, 35.211744595969215 ], [ -83.983628413838446, 35.198358123372778 ], [ -83.999503890697042, 35.179820776855614 ], [ -84.031039248746055, 35.142408350725965 ], [ -84.025878427438798, 35.129372293674486 ], [ -84.018038380796639, 35.116898113522588 ], [ -83.999730715306285, 35.130125348980691 ], [ -83.997918364220581, 35.130909621128311 ], [ -83.997141321499811, 35.135477351177791 ], [ -83.986763534180014, 35.138437882111702 ], [ -83.978400218884858, 35.145734065987888 ], [ -83.977088678570055, 35.141620516434983 ], [ -83.980376512509935, 35.126462863361837 ], [ -83.987042011918106, 35.109051865796559 ], [ -84.000116990878468, 35.103567678228181 ], [ -84.006135703282055, 35.100170420180021 ], [ -84.015096398241155, 35.088733720502894 ], [ -83.999901395210259, 35.085622528390957 ], [ -83.995784865420788, 35.084584212822556 ], [ -83.986163908727875, 35.101908569892672 ], [ -83.971242891858651, 35.111372199887008 ], [ -83.942000483572343, 35.119332115489655 ], [ -83.938712649632464, 35.132997915515688 ], [ -83.933998740179049, 35.13776203837935 ], [ -83.904650779846861, 35.131411037067586 ], [ -83.890814478683211, 35.119056571747379 ], [ -83.908064377926522, 35.096014144507691 ], [ -83.925770172176527, 35.092195769962935 ], [ -83.925112156230895, 35.075468521251331 ], [ -83.910862630036547, 35.053746650154999 ], [ -83.893644171828186, 35.078736319739377 ], [ -83.861295838447049, 35.09277827657877 ], [ -83.777730059141831, 35.093766874497867 ], [ -83.76516487410521, 35.09080839517803 ], [ -83.729932948662039, 35.096194217429101 ], [ -83.684599467848955, 35.10528003369982 ], [ -83.625804732503326, 35.099830502848867 ], [ -83.614526384111201, 35.084264445720066 ], [ -83.628270607958228, 35.066620180527401 ], [ -83.610432312203827, 35.056504252876429 ], [ -83.614252397949556, 35.049718544431869 ], [ -83.608208981875634, 35.048010538212033 ], [ -83.606120398840048, 35.042062573669021 ], [ -83.552946871384819, 35.011368977169326 ], [ -83.554002391843639, 35.000175545337122 ], [ -83.55519939695975, 34.988748755658214 ], [ -83.547855669512074, 34.964688595162919 ], [ -83.573637318166291, 34.954880327251104 ], [ -83.627720389846701, 34.919635238836435 ], [ -83.626649148870385, 34.909703714546794 ], [ -83.630536608262418, 34.894386960361366 ], [ -83.644182017428193, 34.890723114242334 ], [ -83.655451382667479, 34.878455685101962 ], [ -83.654371158538325, 34.865132424932554 ], [ -83.660093426898158, 34.854112526026867 ], [ -83.65872798766631, 34.830132696869676 ], [ -83.651833417860686, 34.82232530379995 ], [ -83.666725239483185, 34.806392976755319 ], [ -83.710183487140682, 34.790660446446502 ], [ -83.738419782308753, 34.801797640051632 ], [ -83.797589564285502, 34.788967328514289 ], [ -83.811805403656692, 34.793436125582616 ], [ -83.823638461736763, 34.781855115816754 ], [ -83.830014254465794, 34.758618106418183 ], [ -83.876922032814306, 34.756193671916385 ], [ -83.910294445619343, 34.74978536799118 ], [ -83.907035806926203, 34.731947257653786 ], [ -83.922343099367609, 34.729341161243724 ], [ -83.938950703182755, 34.741311546263191 ], [ -83.98567881847444, 34.71356255692271 ], [ -83.996123979440554, 34.677853923145506 ], [ -83.999501644908833, 34.678153113182702 ], [ -84.007397836256246, 34.673630057095245 ], [ -84.0151502971582, 34.673364095924377 ], [ -84.018042872373059, 34.670390444126987 ], [ -84.024268197292002, 34.67039598519235 ], [ -84.029022530933219, 34.661267500940284 ], [ -84.028301632917703, 34.656183781156628 ], [ -84.031191962344352, 34.651907082065513 ], [ -84.044610546900898, 34.659403629713736 ], [ -84.085933049970393, 34.667462862769675 ], [ -84.139739889700948, 34.700578206959712 ], [ -84.149803266671285, 34.701379518325346 ], [ -84.155640070229865, 34.651105291886076 ], [ -84.161375813318969, 34.639818440938726 ], [ -84.160814366266393, 34.634439602362725 ], [ -84.176871751970026, 34.635282205407947 ], [ -84.18589083742259, 34.629463265544494 ], [ -84.193948725521139, 34.629941879052055 ], [ -84.197703683408761, 34.63298350499484 ], [ -84.194101439119436, 34.638068647502401 ], [ -84.198080975828077, 34.642577016008453 ], [ -84.202635434318566, 34.641658732956053 ], [ -84.229645529123829, 34.657552647722824 ], [ -84.234415583282498, 34.665355309558223 ], [ -84.242430801405078, 34.670316563220169 ], [ -84.240519635638094, 34.673753802626685 ], [ -84.246614704840852, 34.676930490288292 ], [ -84.249156937094909, 34.682949240479211 ], [ -84.257646016529833, 34.68706183227652 ], [ -84.260008585727078, 34.699193434003071 ], [ -84.252489686798995, 34.717721622616374 ], [ -84.261639027967746, 34.717736390342019 ], [ -84.26112923404402, 34.725201138018008 ], [ -84.297275195288776, 34.741210047050281 ], [ -84.277051872455033, 34.752726643799846 ], [ -84.313294402592831, 34.80472231014609 ], [ -84.314998955844445, 34.807032836785737 ], [ -84.321174873422763, 34.805170406169267 ], [ -84.328390590942462, 34.806761772768375 ], [ -84.334503626450896, 34.811880491008004 ], [ -84.330681294916971, 34.817725324359209 ], [ -84.377151144564465, 34.831636940689705 ], [ -84.417721308583509, 34.849643333595388 ], [ -84.419266410872197, 34.852616064708457 ], [ -84.422450938554405, 34.854600897290275 ], [ -84.546789002817604, 34.854903133148241 ], [ -84.623244616649018, 34.855341741747736 ], [ -84.623882420500735, 34.825892646063664 ], [ -84.754569328034449, 34.825887115420052 ], [ -84.754005635193664, 34.828545468633074 ], [ -84.757176688146615, 34.828027446756586 ], [ -84.762029836469054, 34.828757469528952 ], [ -84.762732768178878, 34.826213422757583 ], [ -84.767635323841958, 34.826165490687316 ], [ -84.817570424697962, 34.782343915618853 ], [ -84.824673852807138, 34.773626243648884 ], [ -84.828428810694746, 34.770421908015258 ], [ -84.832677841988641, 34.763321011141656 ], [ -84.842251637129152, 34.754175100604527 ], [ -84.845393494835349, 34.748087720727057 ], [ -84.846487193693761, 34.743112675192236 ], [ -84.822605481865452, 34.742490773432834 ], [ -84.822169798952643, 34.737317919532586 ], [ -84.820714528192383, 34.730249243825014 ], [ -84.80700174538029, 34.730692207317475 ], [ -84.743299962795163, 34.674640332370515 ], [ -84.730141889671032, 34.639415640652153 ], [ -84.712530418525859, 34.615981492352425 ], [ -84.721787557528714, 34.588776573834529 ], [ -84.730999780767362, 34.499672106034666 ], [ -84.72358418809695, 34.470736917091052 ], [ -84.720118936888454, 34.464219515309779 ], [ -84.722537650790954, 34.462095695199196 ], [ -84.720559111377682, 34.44199357174805 ], [ -84.721742641764507, 34.412812350870183 ], [ -84.734119180591463, 34.412604843016524 ], [ -84.734444819881958, 34.396456559652499 ], [ -84.884328725037307, 34.398133606160322 ], [ -84.955019400532876, 34.398385623504339 ], [ -84.95526643723602, 34.391019362320009 ], [ -84.953355271469036, 34.383761802902576 ], [ -84.970991446284515, 34.383860032498085 ], [ -84.972792568429185, 34.391049013979028 ], [ -84.972325444481442, 34.398370798975698 ], [ -84.980827998645637, 34.398511631891729 ], [ -84.981189570547485, 34.391788448828926 ], [ -84.979056071747706, 34.3845550499287 ], [ -84.987825874708918, 34.383982355984209 ], [ -84.990350140657299, 34.391351089656766 ], [ -84.990523066349496, 34.39882665203011 ], [ -84.997723063351714, 34.398839623422155 ], [ -84.997413144578687, 34.402947747424037 ], [ -84.999901477915699, 34.402768009636915 ], [ -85.005987563965604, 34.403477693703472 ], [ -85.056538010791215, 34.43153410993294 ], [ -85.061393404901892, 34.431686000983944 ], [ -85.065283110082134, 34.429153829968165 ], [ -85.082205124246727, 34.429083439334185 ], [ -85.089088465111303, 34.426530812610125 ], [ -85.183202711640277, 34.389660934428122 ], [ -85.19467868939492, 34.394629374596178 ], [ -85.201743939104517, 34.396551068139331 ], [ -85.206990100363768, 34.399771705329904 ], [ -85.215259092554092, 34.402693890849378 ], [ -85.217994462594234, 34.409614449459951 ], [ -85.220538940636501, 34.411502448911641 ], [ -85.224868820305957, 34.406640624943677 ], [ -85.231523090773081, 34.406472012411697 ], [ -85.241557272496692, 34.415974929170631 ], [ -85.241316973158192, 34.409242032367359 ], [ -85.249743170523232, 34.408665801658152 ], [ -85.249455709632315, 34.402623477940395 ], [ -85.252817654583126, 34.403238662405577 ], [ -85.264419396477535, 34.398958218913307 ], [ -85.266162128128727, 34.396093349572595 ], [ -85.33403658520858, 34.371435854439852 ], [ -85.360233704681718, 34.339589443602343 ], [ -85.364545618045497, 34.338745702414954 ], [ -85.413528504700324, 34.345823593422935 ], [ -85.393487090711616, 34.365348205674771 ], [ -85.36038192670361, 34.387816921322255 ], [ -85.290174095673237, 34.480617586442179 ], [ -85.277195685605918, 34.499797961710392 ], [ -85.267725196723092, 34.514053588724394 ], [ -85.248900999944368, 34.548450995855703 ], [ -85.249761136828923, 34.556913110265775 ], [ -85.246520464441446, 34.559739172265431 ], [ -85.24700780048309, 34.568862184348319 ], [ -85.240263698487553, 34.588759934275359 ], [ -85.237712483080657, 34.595165918224403 ], [ -85.286996305355657, 34.595731617745315 ], [ -85.294602790023959, 34.594121397547752 ], [ -85.296882265057405, 34.588741445872394 ], [ -85.301070660069612, 34.576830361783678 ], [ -85.306370720245909, 34.568298151203741 ], [ -85.315717690777177, 34.56888252645583 ], [ -85.314637466648023, 34.565183879652977 ], [ -85.320413633924915, 34.559816850624273 ], [ -85.327844947112794, 34.560310661351984 ], [ -85.328226731108543, 34.530512167528357 ], [ -85.331806517515759, 34.530504766987178 ], [ -85.348288357191137, 34.499803514162302 ], [ -85.3499143078554, 34.498639341989694 ], [ -85.35389833614046, 34.497477004429399 ], [ -85.354841567188799, 34.495102305826542 ], [ -85.359528527183684, 34.499150173116348 ], [ -85.368747487786962, 34.485617644160484 ], [ -85.365477620152774, 34.486130406182674 ], [ -85.365955973041551, 34.475391363535465 ], [ -85.364698331643794, 34.472575398913243 ], [ -85.373892588576751, 34.463986212516538 ], [ -85.398867999263487, 34.463636257104092 ], [ -85.405335869309155, 34.45502392912973 ], [ -85.416019083825546, 34.452692466755003 ], [ -85.415509289901806, 34.479799332986843 ], [ -85.411866621424693, 34.499759094536699 ], [ -85.40283855281929, 34.545987110293837 ], [ -85.442216203298685, 34.546501350691578 ], [ -85.434939849497312, 34.554469820907585 ], [ -85.435269980364225, 34.558551794036873 ], [ -85.439137227662357, 34.557971045242049 ], [ -85.437666236384615, 34.559811302172477 ], [ -85.439584139516199, 34.561732893845772 ], [ -85.430068734869167, 34.561292725659513 ], [ -85.422936111513266, 34.566787263241665 ], [ -85.420398370835613, 34.575216077010573 ], [ -85.412014843446585, 34.59031849185466 ], [ -85.46337601981611, 34.61106134717474 ], [ -85.459066352240555, 34.613332930528706 ], [ -85.458981012288561, 34.627306698619009 ], [ -85.464714509589456, 34.630546147760768 ], [ -85.463499538167682, 34.689318407876527 ], [ -85.455448387433762, 34.698264699957186 ], [ -85.456261362765886, 34.713575479332683 ], [ -85.447718384413918, 34.719652480373796 ], [ -85.450152818833871, 34.730443040645078 ], [ -85.438458999622839, 34.734929771400857 ], [ -85.421921015242205, 34.760603358976709 ], [ -85.423057384076614, 34.770442200687654 ], [ -85.429260251113462, 34.768855667609621 ], [ -85.432673849193122, 34.784789715651513 ], [ -85.422186018251026, 34.797670470037012 ], [ -85.420950834735351, 34.807807300494346 ], [ -85.417943724321773, 34.813549168685483 ], [ -85.400491704139526, 34.837307102949985 ], [ -85.400267125318507, 34.850592481362995 ], [ -85.387587405083167, 34.861867150618103 ], [ -85.37995397095635, 34.893055173962594 ], [ -85.383778548278499, 34.894377750294431 ], [ -85.379325150257472, 34.903128690216725 ], [ -85.404585776046915, 34.891480211977083 ], [ -85.425132492382943, 34.883558892784293 ], [ -85.441205598604043, 34.8878917647774 ], [ -85.441266234885717, 34.900903744843575 ], [ -85.439626809492196, 34.906408901218356 ], [ -85.419962687922833, 34.922220589651872 ], [ -85.402396132541881, 34.933492798518493 ], [ -85.398551343125845, 34.944470757690404 ], [ -85.383562952610305, 34.95991436631504 ], [ -85.366775685738318, 34.983146083917688 ], [ -85.401935745958767, 34.9828314397502 ], [ -85.402613973998271, 34.978463096979944 ], [ -85.408834807340796, 34.978549582859515 ], [ -85.408351962875585, 34.982919761042083 ], [ -85.456869971370878, 34.98313872383401 ], [ -85.45594919820465, 34.981136756510828 ], [ -85.461644517105967, 34.978993051573028 ], [ -85.469096042387747, 34.982778078923523 ], [ -85.496544065894028, 34.983206804582757 ], [ -85.497033647723853, 34.980187276955441 ], [ -85.500126098089439, 34.98049089080132 ], [ -85.499560159460444, 34.983098243361979 ], [ -85.605574837715821, 34.98471928661823 ], [ -85.5810598136122, 34.847499878066934 ], [ -85.553438864413735, 34.71134171847541 ], [ -85.525213798186684, 34.57921567365085 ], [ -85.513102262368548, 34.523566470299954 ], [ -85.507999831554756, 34.500103346016054 ], [ -85.478216188309759, 34.36345916505384 ], [ -85.450298795067539, 34.227856303027956 ], [ -85.423794002609597, 34.093092987390207 ], [ -85.406252150898951, 34.000161785537436 ], [ -85.399047662320314, 33.963924530544006 ], [ -85.407824202646154, 33.964412539029887 ], [ -85.408086959866765, 33.96024202509404 ], [ -85.425334613321866, 33.960823189810505 ], [ -85.425570421083947, 33.956743776679922 ], [ -85.495313373954772, 33.956686030158529 ], [ -85.496014059876387, 33.94252204660247 ], [ -85.530428518411, 33.941663152390092 ], [ -85.52945833790416, 33.956147681670011 ], [ -85.667289097734823, 33.96423931496421 ], [ -85.669251916630628, 33.954890280063012 ], [ -85.678758338124823, 33.935048817731797 ], [ -85.682452659730757, 33.920819735848923 ], [ -85.688727391990327, 33.915759975341821 ], [ -85.70682395338892, 33.911052171451182 ], [ -85.71790916399496, 33.903222029389241 ], [ -85.727727750050391, 33.891468943023895 ], [ -85.73083592093343, 33.875539574880541 ], [ -85.732870605051971, 33.871849518248013 ], [ -85.733941846028287, 33.864493168893596 ], [ -85.748725869816681, 33.844328487800723 ], [ -85.762351066888556, 33.832091584893341 ], [ -85.785601712229791, 33.843328709027688 ], [ -85.789392602728768, 33.843787564170711 ], [ -85.794286175239009, 33.846997615986716 ], [ -85.801322229701881, 33.847133774728022 ], [ -85.806072071766664, 33.843925593284482 ], [ -85.813653852764617, 33.841081029336529 ], [ -85.839422026689604, 33.859575529424625 ], [ -85.838308115737291, 33.871312498224455 ], [ -85.864085272815089, 33.885879833495316 ], [ -85.864118959638247, 33.89028142770897 ], [ -85.869504359766552, 33.888329541656312 ], [ -85.883190193120114, 33.900584483263742 ], [ -85.889134794512771, 33.903606004565248 ], [ -85.893532047828529, 33.901816590937663 ], [ -85.897772095969586, 33.905343191031427 ], [ -85.896597548735599, 33.910066220758338 ], [ -85.899292494587954, 33.924917642076835 ], [ -85.899162238871753, 33.943278462528397 ], [ -85.881609158220058, 33.9432467900752 ], [ -85.881346400999462, 33.950214445890005 ], [ -85.845800065206845, 33.950277785599319 ], [ -85.845752903654429, 33.957658401840703 ], [ -85.814819416845765, 33.948016156181289 ], [ -85.740593870707187, 33.935829522285225 ], [ -85.736657003974543, 33.989395948822107 ], [ -85.742628554825714, 34.000379620451568 ], [ -85.796871077469063, 34.110058241341704 ], [ -85.790095534438592, 34.120708369114318 ], [ -85.790771516689887, 34.125066205085467 ], [ -85.796421919827011, 34.129050156359916 ], [ -85.811336199331592, 34.125441741871363 ], [ -85.834191585947821, 34.109611977665857 ], [ -85.841382599797186, 34.110391078133901 ], [ -85.844016909367866, 34.231835403990999 ], [ -85.856303616666423, 34.232030362108937 ], [ -85.856135182550631, 34.242362496416796 ], [ -85.897123063176807, 34.260634179806253 ], [ -85.896655939229063, 34.248284567668051 ], [ -85.938690357161221, 34.199579405853903 ], [ -85.999706177046832, 34.199573833482518 ], [ -86.024818580814397, 34.171655346427166 ], [ -86.034922381972521, 34.161786548850877 ], [ -86.048662114243143, 34.154174652809786 ], [ -86.050315014365907, 34.144190432714609 ], [ -86.056558305590542, 34.139865181795464 ], [ -86.062862233096865, 34.138668124375044 ], [ -86.067630041467325, 34.13506569710632 ], [ -86.078250373913832, 34.131790291979556 ], [ -86.08655529871551, 34.132654698964494 ], [ -86.100701518652173, 34.139755514197056 ], [ -86.11107930597197, 34.144736881837737 ], [ -86.10719858394458, 34.158499171092657 ], [ -86.112294277393744, 34.162745420681837 ], [ -86.116163770480085, 34.162879215885461 ], [ -86.118173750928307, 34.168227133863887 ], [ -86.120212926623267, 34.169013126607652 ], [ -86.126487658882837, 34.180750119032439 ], [ -86.123199824942958, 34.186461023656733 ], [ -86.145873302714136, 34.186776839891756 ], [ -86.145983346336436, 34.165326515740631 ], [ -86.151344042794406, 34.16510353008097 ], [ -86.151175608678642, 34.170209753988658 ], [ -86.153486524747038, 34.171794701716216 ], [ -86.155451589431053, 34.169423772387958 ], [ -86.155597565664721, 34.164934432229693 ], [ -86.161290638777828, 34.164778341604809 ], [ -86.161445598164335, 34.171599604247113 ], [ -86.169573105697424, 34.171744533838663 ], [ -86.169512469415736, 34.168608053247105 ], [ -86.17476087646321, 34.168385076255788 ], [ -86.174749647522162, 34.177725449519805 ], [ -86.172373603595659, 34.177766324154859 ], [ -86.172149024774626, 34.18287363978002 ], [ -86.174852953779833, 34.182210393633028 ], [ -86.17777697002964, 34.184317157487065 ], [ -86.181318578037278, 34.182071055544412 ], [ -86.18434365475656, 34.183100294130611 ], [ -86.186771351811885, 34.182646984820472 ], [ -86.189104725762377, 34.183681789802208 ], [ -86.193973594602312, 34.181309336592228 ], [ -86.196726930948131, 34.177900095549347 ], [ -86.201708089198576, 34.175869348637001 ], [ -86.303141359504934, 34.099029260513788 ], [ -86.305472487667217, 34.102212954756361 ], [ -86.311354206989989, 34.106558727199904 ], [ -86.313272110121588, 34.112081273811725 ], [ -86.321206479868579, 34.114987438903881 ], [ -86.323764432640104, 34.118445701024683 ], [ -86.367510141188518, 34.162580034650958 ], [ -86.367211451356553, 34.165192724415505 ], [ -86.364226798825072, 34.165149985475296 ], [ -86.364352562964839, 34.172864942666585 ], [ -86.375585995592758, 34.173632311938043 ], [ -86.375828540719468, 34.171110929559255 ], [ -86.406121977888176, 34.20203121353299 ], [ -86.444226266452333, 34.248663269020355 ], [ -86.48349162752119, 34.250369260353736 ], [ -86.483161496654276, 34.259895444427322 ], [ -86.486013647681347, 34.259847185106459 ], [ -86.491439471997438, 34.257276408188162 ], [ -86.492499484032706, 34.255522295094032 ], [ -86.491178960565037, 34.253996465390493 ], [ -86.495643587527113, 34.250601302204736 ], [ -86.498906717796686, 34.248600152246645 ], [ -86.510268160352581, 34.253656769610238 ], [ -86.516316068002922, 34.252840009115758 ], [ -86.51885830025698, 34.250638428841512 ], [ -86.51996322805644, 34.246803160712474 ], [ -86.525308203996957, 34.237750789368775 ], [ -86.522397662476408, 34.233499032089192 ], [ -86.524277387208429, 34.225947456185459 ], [ -86.527614628488934, 34.227148846354822 ], [ -86.529186680236137, 34.224889030245379 ], [ -86.533821987102201, 34.224084989019047 ], [ -86.540015870986196, 34.226051441174306 ], [ -86.538261910393956, 34.223214090440742 ], [ -86.542744503661709, 34.216001441461046 ], [ -86.547087858060436, 34.216046011733873 ], [ -86.54284556413117, 34.21165015507777 ], [ -86.549668268714058, 34.20544133655779 ], [ -86.554092471488346, 34.205439479229852 ], [ -86.548381432069561, 34.198999877256604 ], [ -86.556562838519682, 34.193234093750327 ], [ -86.554514679671897, 34.187646257301026 ], [ -86.545518052101428, 34.18687158453168 ], [ -86.549935517511088, 34.180919185197247 ], [ -86.557443187498123, 34.178366435835649 ], [ -86.563524781971608, 34.17095113418052 ], [ -86.568099452555984, 34.170009078531095 ], [ -86.573945239267388, 34.165436150140643 ], [ -86.575126523866004, 34.157822724743724 ], [ -86.582584786512413, 34.153940486926302 ], [ -86.584152346683197, 34.149801590709124 ], [ -86.584170312988888, 34.145543538369182 ], [ -86.589164945968591, 34.146907774052792 ], [ -86.591098569617657, 34.145032408972504 ], [ -86.5875524700336, 34.137309332127074 ], [ -86.598817343696453, 34.133247695633031 ], [ -86.604162319636956, 34.123344663617878 ], [ -86.599176669810106, 34.120766004076074 ], [ -86.605541233598089, 34.117856319036335 ], [ -86.612287581381835, 34.112973772755602 ], [ -86.615501304310754, 34.117012212757075 ], [ -86.621811969181707, 34.123078806897354 ], [ -86.640512647608872, 34.112494055743788 ], [ -86.638365674079822, 34.106177528021853 ], [ -86.644449514341517, 34.108213669570276 ], [ -86.652756684931404, 34.10777483407329 ], [ -86.655559428617863, 34.093295705337134 ], [ -86.669750564318747, 34.08292113064897 ], [ -86.672052497234304, 34.088527055487766 ], [ -86.687083557725828, 34.078940587101769 ], [ -86.688633151590935, 34.08750782403326 ], [ -86.687748311036074, 34.092326746361245 ], [ -86.691977130236069, 34.092549924075861 ], [ -86.695770266523269, 34.086553678358683 ], [ -86.70407968290138, 34.081347536263358 ], [ -86.684083184676865, 34.056262801504936 ], [ -86.686513127520413, 34.051220401904423 ], [ -86.696347434093312, 34.058292701313533 ], [ -86.695788232828946, 34.061115130153972 ], [ -86.703430650108587, 34.059239723181911 ], [ -86.709447116723979, 34.045956263319461 ], [ -86.700026035181779, 34.037254552814332 ], [ -86.70986707911932, 34.028321158371334 ], [ -86.719737318303572, 34.032713528189241 ], [ -86.725057590573783, 34.022551174553165 ], [ -86.72295104123252, 34.017197767798358 ], [ -86.728367882395744, 34.016101357376066 ], [ -86.743250720865404, 34.00856943548969 ], [ -86.743443858651489, 34.00543062722388 ], [ -86.74055577501305, 34.000182265766831 ], [ -86.761502241650504, 33.995287350507724 ], [ -86.757466560236594, 33.990548565552515 ], [ -86.762979970292875, 33.984684767988647 ], [ -86.762265809642003, 33.974483142440626 ], [ -86.775444094860035, 33.973278159867199 ], [ -86.776840975126845, 33.970458396665045 ], [ -86.770503360797377, 33.968623824165711 ], [ -86.772385331317608, 33.965429524816244 ], [ -86.78308426635148, 33.969080142850544 ], [ -86.786169979352422, 33.965500303594204 ], [ -86.794025746512048, 33.962490290925579 ], [ -86.788179959800644, 33.959364682376339 ], [ -86.790508842174717, 33.95386757972021 ], [ -86.795045334359529, 33.952584064082686 ], [ -86.803031357235341, 33.955493835153369 ], [ -86.809948384923061, 33.953621682722826 ], [ -86.820856178260485, 33.958092426226528 ], [ -86.824233843728777, 33.952923107830735 ], [ -86.81840153174663, 33.941674331112289 ], [ -86.823874517615138, 33.942898392312159 ], [ -86.83689559765844, 33.950870195892392 ], [ -86.84206540211855, 33.949597812727006 ], [ -86.860927777296851, 33.934825225610361 ], [ -86.859355725549634, 33.928607266206797 ], [ -86.878011488212593, 33.936440665484973 ], [ -86.885613481304446, 33.933360682698257 ], [ -86.883048791168292, 33.923395159683899 ], [ -86.88696544580705, 33.916814815765605 ], [ -86.894877357671945, 33.916529674677356 ], [ -86.909257139582479, 33.912996082410125 ], [ -86.91603717418937, 33.916147621396753 ], [ -86.922439916376931, 33.910146364624268 ], [ -86.925828810786271, 33.908096149011556 ], [ -86.927665865542309, 33.897324251658709 ], [ -86.921393379070921, 33.895887025927259 ], [ -86.920571420585958, 33.881901238234512 ], [ -86.924438667884104, 33.876813064215369 ], [ -86.920149212402421, 33.87318645967197 ], [ -86.924494812589359, 33.872220582193215 ], [ -86.932539225958649, 33.867271687127356 ], [ -86.944286944086727, 33.866714125955617 ], [ -86.951965293977722, 33.871892405118096 ], [ -86.952960178154896, 33.868616159122531 ], [ -86.947361428146621, 33.861958857641845 ], [ -86.950891807213196, 33.861328531609999 ], [ -86.954938717568169, 33.86516449701994 ], [ -86.963872463068725, 33.867704307333661 ], [ -86.960445390259821, 33.863353763796972 ], [ -86.959549320763912, 33.858020176080778 ], [ -86.974477074997765, 33.86069074136261 ], [ -86.993110379778614, 33.859831022408905 ], [ -86.995803079842773, 33.868875354478988 ], [ -87.000121730571166, 33.870272012314231 ], [ -87.007007317223938, 33.867674471527742 ], [ -87.007166768186877, 33.889280322676782 ], [ -87.091788067950944, 33.890055853857547 ], [ -87.09016885465131, 33.892818626384035 ], [ -87.101224870010611, 33.898798734336644 ], [ -87.097164484926381, 33.902200572443476 ], [ -87.082297366974217, 33.906606916024572 ], [ -87.085612150372611, 33.918952411704552 ], [ -87.09617184653743, 33.931443323180552 ], [ -87.10553678337439, 33.935971129026825 ], [ -87.106064543603807, 33.945428435624379 ], [ -87.112613262025036, 33.951537118268888 ], [ -87.109788060456466, 33.956876034694154 ], [ -87.119988430507647, 33.964213238192592 ], [ -87.135818991602051, 33.965498440995532 ], [ -87.14001861555532, 33.970847656197087 ], [ -87.13794799882541, 33.976960100899149 ], [ -87.147921544267362, 33.991995366039454 ], [ -87.163246803014431, 34.00079667035255 ], [ -87.169501323180114, 34.005251901554125 ], [ -87.189870622247525, 34.00303455493578 ], [ -87.191653778086504, 34.000130134264118 ], [ -87.202694072928324, 33.984770428153006 ], [ -87.216348465246938, 33.993970944421278 ], [ -87.287663469864981, 33.995237077948318 ], [ -87.286987487613686, 34.000102206660216 ], [ -87.287104268600629, 34.07186443007113 ], [ -87.341548912182901, 34.071570507502813 ], [ -87.341468063807326, 34.127765571021477 ], [ -87.343464569526276, 34.207523375433226 ], [ -87.341459080654488, 34.320665349303638 ], [ -87.348007799075717, 34.315058146263254 ], [ -87.351893012679525, 34.336223700131391 ], [ -87.323888033697102, 34.387125637599887 ], [ -87.36419544049555, 34.385003564781044 ], [ -87.410773087977148, 34.406705475827032 ], [ -87.410835970047032, 34.416195397363893 ], [ -87.441286612390485, 34.409362465936908 ], [ -87.467730768566739, 34.389130900649917 ], [ -87.531636917879013, 34.388183873901184 ], [ -87.539863240093325, 34.415856357801125 ], [ -87.586692415854486, 34.401289327414489 ], [ -87.611575749224599, 34.406874087888482 ], [ -87.627347919825525, 34.393936293967158 ], [ -87.667713717117437, 34.395113045110882 ], [ -87.713610890771321, 34.403423958044833 ], [ -87.735430969022573, 34.416638184668393 ], [ -87.75359041249105, 34.405406595697919 ], [ -87.781837936600184, 34.419176292598856 ], [ -87.806629192653673, 34.415541401784552 ], [ -87.841829677061895, 34.419678347157785 ], [ -87.858147574197929, 34.415628477978352 ], [ -87.869902029690635, 34.418190700712273 ], [ -87.891142694583635, 34.427142116384069 ], [ -87.926150041205773, 34.42311113390268 ], [ -87.947033625773344, 34.439637667669743 ], [ -87.972476160407822, 34.428792614244365 ], [ -87.988951262718572, 34.413473778717801 ], [ -87.999793928197903, 34.417786826997329 ], [ -88.029737022405811, 34.42964841511963 ], [ -88.039420861168622, 34.410266638582982 ], [ -88.069253911754217, 34.441726868960508 ], [ -88.097267873889493, 34.439009785796131 ], [ -88.115521640462802, 34.417968385147226 ], [ -88.146327117343475, 34.417714574154544 ], [ -88.146145208498439, 34.408613922171227 ], [ -88.163210953108504, 34.4088566437796 ], [ -88.16325586887271, 34.405215745705839 ], [ -88.168369528627551, 34.361685022373898 ], [ -88.191462968794056, 34.182834625445118 ], [ -88.208908251611646, 34.044443391032516 ], [ -88.21421280336439, 33.999921607933317 ], [ -88.233656837689153, 33.860435250950566 ], [ -88.244048099738194, 33.794071399872827 ], [ -88.244333314840915, 33.779811341347084 ], [ -88.251391827185884, 33.723996981637853 ], [ -88.267130310963651, 33.591952984544207 ], [ -88.27940803510937, 33.499151892587435 ], [ -88.291420756246254, 33.401787299929772 ], [ -88.307987935873626, 33.266946597557634 ], [ -88.324617997570883, 33.132196408258039 ], [ -88.340630467510309, 32.998883367171914 ], [ -88.347843939241784, 32.928795000288524 ], [ -88.357022475657274, 32.85201792173951 ], [ -88.372408370686031, 32.716450831433285 ], [ -88.389438182684742, 32.577556785521686 ], [ -88.469266970408015, 32.577581387283409 ], [ -88.581605788263587, 32.577664654734519 ], [ -88.74767508905056, 32.577034469603078 ], [ -88.914411388935974, 32.576640838204753 ], [ -88.915033472270238, 32.567403251543631 ], [ -88.931596160321178, 32.56755655668865 ], [ -88.931708449731701, 32.576814944613275 ], [ -88.966488971744596, 32.576514043107544 ], [ -88.966208248218308, 32.558550854609528 ], [ -88.94918741937245, 32.558562211675714 ], [ -88.949234580924866, 32.514724595826571 ], [ -88.931733153402007, 32.514806027830886 ], [ -88.931831968083259, 32.50000123472374 ], [ -88.931944257493782, 32.485826728279875 ], [ -88.965857905257494, 32.485322822587044 ], [ -88.965543494908061, 32.442133688984903 ], [ -88.988414602041743, 32.441974483957111 ], [ -88.983756837293583, 32.454965826469476 ], [ -88.997869370407102, 32.472618162635975 ], [ -88.999969182383722, 32.477799894976762 ], [ -89.005628568673671, 32.480312027866511 ], [ -89.006472985040759, 32.485483845389652 ], [ -89.018950584337176, 32.485542571281243 ], [ -89.018867490173392, 32.48334695462038 ], [ -89.044442526312281, 32.483185927994121 ], [ -89.044534603628904, 32.471308946500542 ], [ -89.062880447518822, 32.471265368790938 ], [ -89.066619684888977, 32.473686741723739 ], [ -89.066410826585411, 32.4778984113129 ], [ -89.064250378327117, 32.481310420185658 ], [ -89.068434281762904, 32.489748003225685 ], [ -89.068115379837025, 32.493638799881438 ], [ -89.075472582013973, 32.500044798519603 ], [ -89.081078069386876, 32.50627231011137 ], [ -89.080754675884606, 32.51063017529831 ], [ -89.083786489968503, 32.512573249179503 ], [ -89.083945940931429, 32.529619743599675 ], [ -89.10180894035615, 32.529822343004284 ], [ -89.10194368764877, 32.538253481241988 ], [ -89.096794095282547, 32.538370864061335 ], [ -89.096679560083828, 32.542106208165421 ], [ -89.092313747803004, 32.541848733780995 ], [ -89.092311502014795, 32.550373393884016 ], [ -89.098256103407465, 32.550869362957222 ], [ -89.097890039929183, 32.562673375190762 ], [ -89.092691040222334, 32.563157919807018 ], [ -89.092789854903586, 32.573079152486393 ], [ -89.096803078435386, 32.573109433088682 ], [ -89.097095030902736, 32.5768660409951 ], [ -89.106096150049609, 32.576758170821556 ], [ -89.106037759556131, 32.591151068679494 ], [ -89.110518107035688, 32.591474626858478 ], [ -89.110738194280302, 32.600157281069848 ], [ -89.114556034237808, 32.599640772770286 ], [ -89.114609933154853, 32.605827324748077 ], [ -89.119247485809126, 32.60582921659465 ], [ -89.119595582981717, 32.611784551538591 ], [ -89.12797461879434, 32.611542410954421 ], [ -89.128922341419084, 32.629981055904764 ], [ -89.146785340843806, 32.630588172786602 ], [ -89.14746581467152, 32.620567380250442 ], [ -89.141364008104148, 32.620809496428585 ], [ -89.14127866815214, 32.618450727339336 ], [ -89.13777748433229, 32.618301292400716 ], [ -89.138114352563846, 32.60688675257326 ], [ -89.135482288781361, 32.606795944964958 ], [ -89.135423898287897, 32.604504914219625 ], [ -89.129099758687701, 32.604153024867585 ], [ -89.128145298698314, 32.576824406908401 ], [ -89.14582414348979, 32.576862256078932 ], [ -89.1459566449942, 32.560201399818965 ], [ -89.168479654955291, 32.55970548231597 ], [ -89.168122574629862, 32.545364331258376 ], [ -89.176223132704393, 32.545010316636116 ], [ -89.178239850517258, 32.515978261764538 ], [ -89.212360110796325, 32.514306072035794 ], [ -89.210792550625527, 32.50481395951217 ], [ -89.213006897800881, 32.500482329386045 ], [ -89.209577579203767, 32.496499015317731 ], [ -89.209880760612137, 32.490206421313403 ], [ -89.202761611985508, 32.49024620128526 ], [ -89.202595423657925, 32.471621568581483 ], [ -89.193908714860498, 32.471983450968111 ], [ -89.194074903188053, 32.437958254585695 ], [ -89.199145892966911, 32.43378262678943 ], [ -89.200192430272921, 32.430897672479134 ], [ -89.219647693538747, 32.425360652077416 ], [ -89.2327675882633, 32.425946405678793 ], [ -89.2390894820753, 32.423893407911734 ], [ -89.248822728178723, 32.430755507429772 ], [ -89.25268548390045, 32.42914428787325 ], [ -89.257239942390939, 32.431923149729236 ], [ -89.265668385544188, 32.429430518391342 ], [ -89.270901072074182, 32.418913319833145 ], [ -89.276136004392384, 32.416335016248269 ], [ -89.27645715210646, 32.408806327310423 ], [ -89.281469751391839, 32.404216002518083 ], [ -89.278880357585365, 32.398916266605099 ], [ -89.270305938198447, 32.391388021076459 ], [ -89.264006502268558, 32.391177524587853 ], [ -89.267368447219383, 32.386796810646437 ], [ -89.263584294085021, 32.372644325544009 ], [ -89.260788287763205, 32.369541179422477 ], [ -89.262322161110845, 32.360360098888243 ], [ -89.26033463854472, 32.356385767676137 ], [ -89.262093090713378, 32.350041652280623 ], [ -89.259142125005056, 32.348265827355732 ], [ -89.259775437280354, 32.344579361546387 ], [ -89.258513304306163, 32.339000995928998 ], [ -89.262560214661121, 32.330591054707064 ], [ -89.271943117803758, 32.332397588122681 ], [ -89.271455781762128, 32.325076350519964 ], [ -89.305331251126276, 32.325252841438484 ], [ -89.305652398840337, 32.330858621279376 ], [ -89.321159566432442, 32.330786511217163 ], [ -89.321206727984858, 32.341587199347046 ], [ -89.314264996626832, 32.341997038445129 ], [ -89.314211097709787, 32.354422250802287 ], [ -89.322558692487476, 32.354029542311991 ], [ -89.322612591404521, 32.365766426533412 ], [ -89.343152570375906, 32.365722797814783 ], [ -89.342775277956576, 32.354718203900113 ], [ -89.349559804139886, 32.354765632191146 ], [ -89.349580016233773, 32.347947085858657 ], [ -89.336498299908783, 32.347028800505456 ], [ -89.330185389249635, 32.343091831007513 ], [ -89.443822272690767, 32.342490360823433 ], [ -89.444635248022891, 32.380329654143289 ], [ -89.473421761302504, 32.380390345153799 ], [ -89.47349362652524, 32.38336415472758 ], [ -89.490173095563122, 32.383678978327488 ], [ -89.490379708078478, 32.399028142598993 ], [ -89.473322946621252, 32.399540115717627 ], [ -89.472139416234413, 32.479573172530074 ], [ -89.463239357557015, 32.479703893531209 ], [ -89.462484772718341, 32.499686817136556 ], [ -89.462168116580699, 32.501866882734127 ], [ -89.44598945831369, 32.501603610893333 ], [ -89.445767125280881, 32.530591080514256 ], [ -89.455013035342674, 32.530914857151785 ], [ -89.455102866871087, 32.609321497242576 ], [ -89.463991696607451, 32.608892063790663 ], [ -89.464503736319401, 32.590967529310191 ], [ -89.471604918640381, 32.590696949966826 ], [ -89.474180837717583, 32.573137821144059 ], [ -89.536539638952945, 32.573111325625987 ], [ -89.536860786667035, 32.575993613591585 ], [ -89.575387283414699, 32.575999291020786 ], [ -89.575499572825223, 32.568758384241313 ], [ -89.600275108361231, 32.568544516893958 ], [ -89.60068384181551, 32.561208368911004 ], [ -89.609819708255003, 32.561338971217218 ], [ -89.610358697425468, 32.524329275917211 ], [ -89.627343593659958, 32.524079324855535 ], [ -89.627107785897891, 32.511389607808987 ], [ -89.644353193564768, 32.510719186423238 ], [ -89.644258870459936, 32.499906530746898 ], [ -89.644842775394608, 32.458926344606638 ], [ -89.607293196518413, 32.458498086448301 ], [ -89.607719896278368, 32.443670761158955 ], [ -89.603448407102377, 32.443738990635545 ], [ -89.603704426958359, 32.385082395486599 ], [ -89.644845021182817, 32.385605826574448 ], [ -89.644865233276718, 32.398074347898856 ], [ -89.670732221882929, 32.397854385862338 ], [ -89.670038273325943, 32.444250710063564 ], [ -89.702631397622028, 32.444646816811108 ], [ -89.703228777285958, 32.429453265148517 ], [ -89.747547161827995, 32.429421040574155 ], [ -89.740187713862852, 32.396322221638719 ], [ -89.781514708508766, 32.396206549769332 ], [ -89.781411402251081, 32.433333398841398 ], [ -89.837544878567499, 32.433212087956868 ], [ -89.833675385481172, 32.400964144197985 ], [ -89.885755214077989, 32.400323239352645 ], [ -89.88889482599599, 32.342657330865329 ], [ -89.922260501436398, 32.340909822323908 ], [ -89.922628810702889, 32.349667897153367 ], [ -89.948884320669492, 32.349639438577867 ], [ -89.952235036679255, 32.323673899703095 ], [ -89.993330715139521, 32.323034344554927 ] ], [ [ -84.899418176022294, 34.663646692890588 ], [ -84.889386240086893, 34.666753578279021 ], [ -84.887484057472761, 34.676751343121467 ], [ -84.90450264053041, 34.684982478211772 ], [ -84.906773132411018, 34.689547385923667 ], [ -84.912724471168318, 34.694869100482812 ], [ -84.923084292182423, 34.69904018437164 ], [ -84.930834507296169, 34.703295987304926 ], [ -84.935409177880544, 34.709885126214978 ], [ -84.933801193521973, 34.713078888125914 ], [ -84.923980361678346, 34.715661499042618 ], [ -84.900341194976733, 34.708070349907665 ], [ -84.901443876987983, 34.742782348134412 ], [ -84.909216549983839, 34.749100777477622 ], [ -84.916623159501398, 34.757505532300236 ], [ -84.923890530149919, 34.760437308082864 ], [ -84.928611176967976, 34.764758212608996 ], [ -84.915877557815577, 34.777138510058492 ], [ -84.915742810522957, 34.780115702841435 ], [ -84.926214920947587, 34.794020758378828 ], [ -84.933401443220532, 34.796836896769257 ], [ -84.950249346374207, 34.810056891897801 ], [ -84.950525578324061, 34.812435491422598 ], [ -84.984980461046476, 34.815090591187463 ], [ -84.999755501682031, 34.816202388798835 ], [ -85.018074396113434, 34.817135328451222 ], [ -85.018218126558892, 34.739992046769366 ], [ -85.000038470996529, 34.744948826660412 ], [ -84.989126186082686, 34.744657259605333 ], [ -84.992382578987616, 34.70499086218669 ], [ -84.978885391843718, 34.704532990913989 ], [ -84.979339041062204, 34.700316025058406 ], [ -84.97031321824501, 34.68379689061652 ], [ -84.949245479044194, 34.671821873690448 ], [ -84.94024885147374, 34.670438466681098 ], [ -84.945178356595349, 34.67640782272786 ], [ -84.943716348470431, 34.680171694258902 ], [ -84.93672520977178, 34.676485391973543 ], [ -84.930017040387611, 34.675704155537439 ], [ -84.919338317447639, 34.681109865237545 ], [ -84.910523598722222, 34.681050768166763 ], [ -84.902584737398826, 34.665892823840167 ], [ -84.899418176022294, 34.663646692890588 ] ], [ [ -89.973716000910755, 34.076328951283756 ], [ -89.971997972929884, 34.079533960365907 ], [ -89.968056614620806, 34.079664167109023 ], [ -89.965761419069878, 34.081131769268964 ], [ -89.963142830016679, 34.07937027160483 ], [ -89.961121620627409, 34.080743015279488 ], [ -89.96149217568211, 34.089109202254491 ], [ -89.911170799253938, 34.088802320272514 ], [ -89.911305546546558, 34.09441901433609 ], [ -89.927843530927206, 34.164289627424779 ], [ -89.936579647065273, 34.187776297596074 ], [ -89.943599981010649, 34.203184652936393 ], [ -89.943858246654841, 34.207699817041807 ], [ -89.938055129919434, 34.207482515218558 ], [ -89.937983264696697, 34.202621865633866 ], [ -89.93231714104212, 34.192933162523076 ], [ -89.922186390425466, 34.164414129024387 ], [ -89.896393512830173, 34.16425060449756 ], [ -89.896097068786418, 34.15684707142703 ], [ -89.878622590722088, 34.157034769416995 ], [ -89.878420469783151, 34.164352807363947 ], [ -89.869084728192945, 34.164049914872649 ], [ -89.869284603343658, 34.184731444364935 ], [ -89.874362330487145, 34.184410047098517 ], [ -89.8740883443255, 34.18847108091817 ], [ -89.877957837411842, 34.188640131609482 ], [ -89.878128517315815, 34.193042761057335 ], [ -89.881827330498169, 34.192845855114207 ], [ -89.881993518825752, 34.210777270743819 ], [ -89.904808481254165, 34.210422542824453 ], [ -89.905140857909302, 34.214454466965051 ], [ -89.922736608536994, 34.214237182558207 ], [ -89.922680463831725, 34.221873371830767 ], [ -89.943959307124302, 34.222122204875227 ], [ -89.94391439136011, 34.232281021883033 ], [ -89.918489823031308, 34.232050786266598 ], [ -89.918793004439706, 34.247274689063786 ], [ -89.952291181384524, 34.247400924552039 ], [ -89.952005966281803, 34.243138515683093 ], [ -89.959028546015404, 34.243274039845048 ], [ -89.958606337831881, 34.222343182858189 ], [ -89.984760787329023, 34.212582459848868 ], [ -89.988349556889077, 34.20873988638634 ], [ -89.992403204608664, 34.208262570441384 ], [ -90.000377998543428, 34.196588846936066 ], [ -90.006605569250581, 34.194070008191467 ], [ -90.010510994948305, 34.191121979678584 ], [ -90.000503762683209, 34.184766742255981 ], [ -89.992814183851152, 34.184571674778624 ], [ -89.987435521087491, 34.184902360331577 ], [ -89.985832028305339, 34.182992540498887 ], [ -89.982887799961631, 34.183756102059242 ], [ -89.983482933837365, 34.186524186998334 ], [ -89.980116497310121, 34.182981393563615 ], [ -89.976997097486006, 34.18136321450023 ], [ -89.979606703386381, 34.178583812697944 ], [ -89.976114502719369, 34.179583367471878 ], [ -89.974383000009226, 34.178271681643487 ], [ -89.966572148613807, 34.178442610697296 ], [ -89.966057863113647, 34.17182071467802 ], [ -89.949708524942665, 34.164074071982384 ], [ -89.95821332489507, 34.16419485742739 ], [ -89.958563667855884, 34.159833464212774 ], [ -89.951767912731526, 34.155843530541006 ], [ -89.951835286377829, 34.145432019491842 ], [ -89.961049755404687, 34.145041702261871 ], [ -89.961334970507394, 34.138251752601661 ], [ -89.9784770719166, 34.13830751679744 ], [ -89.978416435634927, 34.130602415056792 ], [ -89.983469459108093, 34.130665620196176 ], [ -89.984053364042779, 34.116352167836489 ], [ -90.000052359252948, 34.116149505122991 ], [ -90.002590099930572, 34.116002620834443 ], [ -90.002574379413105, 34.108579983898778 ], [ -90.00916801359854, 34.108349410597796 ], [ -90.009264582491582, 34.101223642036132 ], [ -90.013484418538738, 34.100980031302136 ], [ -90.013349671246118, 34.092343484710248 ], [ -90.000164648663457, 34.092389980106788 ], [ -89.978755549654679, 34.092350923975417 ], [ -89.979263097790209, 34.076546590677722 ], [ -89.977497908256908, 34.078399293131383 ], [ -89.976211071612411, 34.077151141615587 ], [ -89.974632282500565, 34.078520201019344 ], [ -89.973716000910755, 34.076328951283756 ] ], [ [ -89.988540448886937, 33.911609442884604 ], [ -89.988978377587955, 33.933552602605552 ], [ -89.99600095732157, 33.933425898249261 ], [ -89.995769641135894, 33.947997526364851 ], [ -89.961159799026987, 33.948914108498357 ], [ -89.960854371830393, 33.934629582022502 ], [ -89.943727990938655, 33.934998509555655 ], [ -89.943640405198437, 33.942043228121278 ], [ -89.934048643752249, 33.941953798690136 ], [ -89.933911650671433, 33.961203179978476 ], [ -89.925624692175433, 33.961473269997242 ], [ -89.925447274906816, 33.97074521965088 ], [ -89.920109036330942, 33.971033904146786 ], [ -89.920297682540593, 33.977313946216732 ], [ -89.913272857018782, 33.977483418978828 ], [ -89.912812470435668, 33.984993889044958 ], [ -89.909562814895367, 33.985072100218353 ], [ -89.916306916890889, 33.999225275227069 ], [ -89.944505033659411, 33.998843593113293 ], [ -89.94453647469436, 34.000305147039498 ], [ -89.944291683779426, 34.013928970964479 ], [ -89.961880697042488, 34.014236124088328 ], [ -89.962069343252153, 34.008364653197432 ], [ -89.970607830027717, 34.007979288817467 ], [ -89.970908765647891, 34.000455955631175 ], [ -89.970895290918619, 33.998843593113293 ], [ -90.000220793368712, 33.999186176162546 ], [ -90.031075677589996, 33.998942272068057 ], [ -90.031109364413155, 33.999992357995772 ], [ -90.030949913450229, 34.005467861691059 ], [ -90.034677921879336, 34.006851110578836 ], [ -90.042823395718074, 34.01843749495238 ], [ -90.070877782041137, 34.018027977474652 ], [ -90.071803046783771, 34.011771421644674 ], [ -90.070981088298808, 33.999906713175811 ], [ -90.072290382825415, 33.98575365168297 ], [ -90.070754263689565, 33.971600095408903 ], [ -90.070563371691691, 33.956568674203972 ], [ -90.03915153199425, 33.956749365050875 ], [ -90.039490646013988, 33.942059996129167 ], [ -90.029883164050332, 33.942121478796473 ], [ -90.030161641788425, 33.922230451601365 ], [ -90.0216321381657, 33.918186461521792 ], [ -90.015016046098154, 33.920825326578317 ], [ -90.012680426359452, 33.917167047557257 ], [ -90.009040003670563, 33.920023984955144 ], [ -90.005859967564774, 33.917767142811861 ], [ -89.999946807207067, 33.918179006984978 ], [ -89.988540448886937, 33.911609442884604 ] ], [ [ -85.311266538544359, 34.665780149313932 ], [ -85.262642978003186, 34.666491289247126 ], [ -85.262272422948485, 34.694043721650324 ], [ -85.264313844431641, 34.698305320749732 ], [ -85.263498623311307, 34.700609594878138 ], [ -85.260965374210087, 34.700762841602966 ], [ -85.259941294786202, 34.710486965924048 ], [ -85.26372320213234, 34.705559505239449 ], [ -85.263429003876794, 34.723377468604873 ], [ -85.256711851339787, 34.73754861024829 ], [ -85.257298002062669, 34.740807739852535 ], [ -85.255752899773981, 34.743332277365688 ], [ -85.276306353474638, 34.743706891490767 ], [ -85.281166239161735, 34.744266041433626 ], [ -85.287708220218335, 34.747478773531768 ], [ -85.29481389411572, 34.731225606039089 ], [ -85.298454316804623, 34.731380641700035 ], [ -85.301751133897326, 34.718360324341091 ], [ -85.308055061403635, 34.710344813995128 ], [ -85.308975834569864, 34.70655277496153 ], [ -85.307089372473214, 34.706301689317939 ], [ -85.307861923617551, 34.701409059609858 ], [ -85.314242207923002, 34.693667035957723 ], [ -85.316133161596085, 34.684823662166664 ], [ -85.316827110153071, 34.674363292844902 ], [ -85.314266911593322, 34.671149566627705 ], [ -85.311248572238682, 34.668619131238295 ], [ -85.311266538544359, 34.665780149313932 ] ], [ [ -84.962704487788514, 34.465882241730803 ], [ -84.962906608727437, 34.476067106851005 ], [ -84.958525075929145, 34.478301649201164 ], [ -84.950372864725765, 34.480402841968171 ], [ -84.946076671879467, 34.470638789530987 ], [ -84.919461835799225, 34.46980007190453 ], [ -84.918868947711701, 34.476226322287644 ], [ -84.933944923967431, 34.478688568848739 ], [ -84.943280665557651, 34.485432530742699 ], [ -84.947502747393003, 34.491091262238172 ], [ -84.933891025050386, 34.491052391005688 ], [ -84.933590089430211, 34.498715226521682 ], [ -84.940046730534817, 34.498530142176122 ], [ -84.940567753399606, 34.499809066613842 ], [ -84.940296013026156, 34.5028573066745 ], [ -84.936653344549057, 34.502263213987014 ], [ -84.936055964885114, 34.50604608696483 ], [ -84.930955779859531, 34.506582782041924 ], [ -84.930998449835528, 34.510681908019883 ], [ -84.924757404399102, 34.510883620526634 ], [ -84.924373374615129, 34.508596283112063 ], [ -84.919351792176911, 34.508742482122649 ], [ -84.91683201780495, 34.506721581930428 ], [ -84.915113989824079, 34.514793785763608 ], [ -84.91761130631393, 34.514777131402546 ], [ -84.917512491632678, 34.521373848359545 ], [ -84.921873812337083, 34.521643997302604 ], [ -84.92213207798126, 34.517267846644231 ], [ -84.925076306324968, 34.51736221849167 ], [ -84.925197578888316, 34.513056162813839 ], [ -84.929729579496708, 34.513874089951742 ], [ -84.93620867848341, 34.512595381320487 ], [ -84.936381604175608, 34.523540566242637 ], [ -84.93970986230326, 34.523405494956123 ], [ -84.93847243299939, 34.527007937706927 ], [ -84.935514729926439, 34.530876643367577 ], [ -84.930115855068863, 34.537370336310858 ], [ -84.927335569264528, 34.547465080433156 ], [ -84.930618911627974, 34.550742787883678 ], [ -84.930542554828833, 34.554223823377761 ], [ -84.935406932092334, 34.567682333598349 ], [ -84.941899505808308, 34.577625473344852 ], [ -84.949263445349885, 34.570269476594227 ], [ -84.967223013667649, 34.561903042268298 ], [ -84.966746906567053, 34.556500659942856 ], [ -84.961763502528399, 34.552664589035949 ], [ -84.953519214008395, 34.550293313067051 ], [ -84.952703992888061, 34.541664035707733 ], [ -84.971427129197323, 34.540298807609041 ], [ -84.971388950797746, 34.534253056894492 ], [ -84.968363874078477, 34.529257766406197 ], [ -84.956452213411055, 34.521299834797595 ], [ -84.948423520559231, 34.52071327499339 ], [ -84.950655834040276, 34.516690510661917 ], [ -84.949200563279987, 34.512921074527583 ], [ -84.961152648135197, 34.509564152803257 ], [ -84.964990700186604, 34.510385815382485 ], [ -84.965576850909486, 34.505640787357613 ], [ -84.967571110840225, 34.500199588110867 ], [ -84.968828752238011, 34.496690381440487 ], [ -84.978777594009628, 34.496338712291916 ], [ -84.9791211996058, 34.490189815184713 ], [ -84.967512720346761, 34.490758079657489 ], [ -84.971002675225563, 34.483461047357693 ], [ -84.971474290749725, 34.478823712609035 ], [ -84.968283025702902, 34.478457157791922 ], [ -84.968884896943266, 34.465974820179525 ], [ -84.962704487788514, 34.465882241730803 ] ], [ [ -89.861999266389446, 33.898135127083101 ], [ -89.857069761267852, 33.898159360023101 ], [ -89.857054040750384, 33.951104923358379 ], [ -89.86257418817128, 33.951341513085609 ], [ -89.862659528123288, 33.955469618519224 ], [ -89.86752165959858, 33.955791885470724 ], [ -89.867649669526557, 33.96044506065455 ], [ -89.870739874103933, 33.960532607948551 ], [ -89.870636567846262, 33.967301417413381 ], [ -89.873814358163827, 33.967480222908812 ], [ -89.873850290775195, 33.977526252700379 ], [ -89.883293830199506, 33.977967625009022 ], [ -89.882943487238691, 33.998530798687788 ], [ -89.909960319408597, 33.999080050039559 ], [ -89.905484463505474, 33.984343988653812 ], [ -89.9057741701846, 33.975872482913502 ], [ -89.903292574212216, 33.975863171055607 ], [ -89.888270496873531, 33.945894193870146 ], [ -89.879913918943004, 33.945702301781594 ], [ -89.879579296499671, 33.94236181970625 ], [ -89.870766823562462, 33.942501552481403 ], [ -89.870652288363743, 33.939980737965129 ], [ -89.868013487216629, 33.94018009556364 ], [ -89.868909556712552, 33.926693526569792 ], [ -89.871200260687047, 33.914503840913987 ], [ -89.861999266389446, 33.898135127083101 ] ], [ [ -85.104029694074413, 34.904165626779843 ], [ -85.099216969939732, 34.905088360384596 ], [ -85.08810480987519, 34.91053430341212 ], [ -85.086698946455527, 34.914180691687491 ], [ -85.090200130275392, 34.914843653972774 ], [ -85.093085968125635, 34.913965227791927 ], [ -85.096445667288236, 34.914764467092496 ], [ -85.095652904049999, 34.919907772534664 ], [ -85.099320276197417, 34.920574371415 ], [ -85.099008111636181, 34.925288286309474 ], [ -85.110335867368931, 34.926326784283937 ], [ -85.117084460940887, 34.927788760928564 ], [ -85.123271607460254, 34.927912125524124 ], [ -85.128299927263114, 34.921240964880965 ], [ -85.131628185390781, 34.920688539740929 ], [ -85.129622696518979, 34.917616988148609 ], [ -85.118229812928135, 34.912501163268217 ], [ -85.115660631215547, 34.908276408067998 ], [ -85.104029694074413, 34.904165626779843 ] ], [ [ -89.538789918739667, 34.357352396965908 ], [ -89.532261412412325, 34.361746200332988 ], [ -89.526020366975899, 34.371015072000084 ], [ -89.544128157315541, 34.371693513128307 ], [ -89.543382555629734, 34.368862931405872 ], [ -89.548720794205607, 34.365882097561702 ], [ -89.549003763520105, 34.36331271164687 ], [ -89.544714308038436, 34.363299734750356 ], [ -89.545024226811464, 34.357797349561672 ], [ -89.538789918739667, 34.357352396965908 ] ], [ [ -88.940163842343466, 36.573373715618757 ], [ -88.934250681985759, 36.57343684089571 ], [ -88.930313815253101, 36.57629906709564 ], [ -88.9337363964856, 36.580551630701152 ], [ -88.936691853770355, 36.580428998559 ], [ -88.936433588126164, 36.582059268765555 ], [ -88.942685862503637, 36.585341345507132 ], [ -88.942856542407625, 36.585384624707778 ], [ -88.944134395899283, 36.576243158211021 ], [ -88.940163842343466, 36.573373715618757 ] ] ], [ [ [ -89.662806835288791, 33.033276909571342 ], [ -89.662613697502707, 33.040530907438402 ], [ -89.697423414762326, 33.040617507490481 ], [ -89.697407694244859, 33.062360838527923 ], [ -89.714677805582056, 33.062372131391704 ], [ -89.714646364547121, 33.069653844682911 ], [ -89.730962015894946, 33.069358372052015 ], [ -89.730775615473476, 33.076628216228336 ], [ -89.739435374812388, 33.07649084187851 ], [ -89.739055836604862, 33.080015461103066 ], [ -89.748090642574894, 33.079729432133576 ], [ -89.747533687098738, 33.090784151330645 ], [ -89.824119556646352, 33.090962897074682 ], [ -89.824301465491374, 33.09134108424059 ], [ -89.82472591946312, 33.091800174932594 ], [ -89.824842700450063, 33.092483161976865 ], [ -89.824508078006716, 33.092923431804451 ], [ -89.823933156224882, 33.093514217766874 ], [ -89.823975826200879, 33.093920615996673 ], [ -89.824296973914954, 33.094422966767674 ], [ -89.824649562663978, 33.094812427749481 ], [ -89.824811259415114, 33.095156732397925 ], [ -89.824335152314532, 33.095453999807447 ], [ -89.8229966625412, 33.095766317648483 ], [ -89.822538521746296, 33.096193401092776 ], [ -89.822415003394724, 33.096906456492228 ], [ -89.821925421564885, 33.097380569281839 ], [ -89.821422365005773, 33.097271448310785 ], [ -89.820658797014275, 33.097122817804703 ], [ -89.820285996171364, 33.09747463897574 ], [ -89.819738023848046, 33.098430381358433 ], [ -89.819459546109982, 33.09917352032069 ], [ -89.819870525352457, 33.09992417836191 ], [ -89.820517312357012, 33.100249649655446 ], [ -89.821797411636894, 33.100418969504979 ], [ -89.823102214587081, 33.100123600222339 ], [ -89.823488490159249, 33.10036441092241 ], [ -89.823360480231258, 33.10091940182015 ], [ -89.822388053936209, 33.101500727510938 ], [ -89.822417249182934, 33.102023729215496 ], [ -89.822924797318464, 33.102394343647099 ], [ -89.823643449545756, 33.102892883437555 ], [ -89.824085869823193, 33.103436570777582 ], [ -89.82447888275999, 33.104072436132753 ], [ -89.825130161340979, 33.104745921639513 ], [ -89.825714066275665, 33.10536108405833 ], [ -89.826059917660032, 33.106273472987716 ], [ -89.826190173376233, 33.10752070273336 ], [ -89.82547825851357, 33.108154657371259 ], [ -89.824341889679161, 33.108359704034818 ], [ -89.824301465491374, 33.10885444768401 ], [ -89.825071770847501, 33.1093830490369 ], [ -89.825687116817122, 33.109939864104426 ], [ -89.825246942327922, 33.110368759791001 ], [ -89.824328414949903, 33.110118570894947 ], [ -89.823636712181127, 33.110071542827413 ], [ -89.823140392986659, 33.110284109492383 ], [ -89.822929288894883, 33.110910519770798 ], [ -89.822958484141623, 33.111519995754811 ], [ -89.823403150207255, 33.112152040457438 ], [ -89.823585059052292, 33.112631714205627 ], [ -89.823099968798871, 33.113350279390623 ], [ -89.822282501890314, 33.113854400148256 ], [ -89.821130412538423, 33.114149723278125 ], [ -89.819376451946184, 33.114379209355953 ], [ -89.818570213978688, 33.114710270182449 ], [ -89.817984063255807, 33.11474600962886 ], [ -89.817516939308064, 33.114623743041413 ], [ -89.817009391172533, 33.114369804200614 ], [ -89.816847694421398, 33.114036861052703 ], [ -89.816852185997817, 33.113412354117699 ], [ -89.81669947239952, 33.112688146239108 ], [ -89.816140271135154, 33.112389056048592 ], [ -89.815511450436276, 33.112819820842937 ], [ -89.814830976608548, 33.114095173220619 ], [ -89.813629479916031, 33.116104097818038 ], [ -89.811547634245102, 33.116512272574397 ], [ -89.809360236528263, 33.116745514440701 ], [ -89.806734910110421, 33.116696608939407 ], [ -89.806177954634265, 33.116414461284847 ], [ -89.805414386642767, 33.116250815229925 ], [ -89.805131417328269, 33.116736109538721 ], [ -89.804947262695023, 33.117857166760572 ], [ -89.804832727496304, 33.118163762133186 ], [ -89.804230856255941, 33.11827473810856 ], [ -89.803640213956626, 33.118079119345865 ], [ -89.80335275306571, 33.118432737560362 ], [ -89.803045080080906, 33.119322419643325 ], [ -89.80246117514622, 33.119506750110617 ], [ -89.802077145362261, 33.11930925316657 ], [ -89.801455062028012, 33.119273515576864 ], [ -89.801412392052015, 33.119681675604475 ], [ -89.801776209742073, 33.120592034915347 ], [ -89.801702098731141, 33.121261632021678 ], [ -89.800965480198158, 33.12147417160876 ], [ -89.800680265095451, 33.121116803866784 ], [ -89.800078393855088, 33.120383254998217 ], [ -89.799431606850519, 33.120815861482427 ], [ -89.799436098426952, 33.121861631833305 ], [ -89.79993466340963, 33.122653474839424 ], [ -89.799582074660606, 33.123123687022385 ], [ -89.799079018101523, 33.123014598020255 ], [ -89.798762361963853, 33.122698615318228 ], [ -89.798396298485571, 33.122455984971765 ], [ -89.797949386631728, 33.122595168353271 ], [ -89.79732281172106, 33.123157542202392 ], [ -89.796902849325733, 33.123757529060484 ], [ -89.79618868867486, 33.125119239509189 ], [ -89.796530048482822, 33.125828298605718 ], [ -89.796527802694612, 33.126554278909943 ], [ -89.795950635124569, 33.127885854124784 ], [ -89.794672781632912, 33.129516442029185 ], [ -89.794176462438429, 33.13062793268913 ], [ -89.794881639936463, 33.131344469969072 ], [ -89.795582325858064, 33.131871055317774 ], [ -89.796033729288339, 33.131953804156801 ], [ -89.796265045474016, 33.132239663182418 ], [ -89.795847328866898, 33.132929858439979 ], [ -89.795312831272838, 33.133838199786169 ], [ -89.795485756965036, 33.134737128758744 ], [ -89.796181951310217, 33.134974083398241 ], [ -89.797709087293228, 33.135357722886901 ], [ -89.799022873396254, 33.135412259736917 ], [ -89.799546142049252, 33.135683062904036 ], [ -89.799415886333051, 33.136134399659213 ], [ -89.79831545011001, 33.136367589406724 ], [ -89.797540653177464, 33.136450334006909 ], [ -89.79734302381496, 33.136890383524644 ], [ -89.797819130915528, 33.137349236227578 ], [ -89.797502474777886, 33.137949126102043 ], [ -89.796880391443636, 33.137958528732014 ], [ -89.796206654980551, 33.137881427136513 ], [ -89.794955750947395, 33.138334633104826 ], [ -89.794344896554193, 33.138896906136225 ], [ -89.794021503051923, 33.139116925037463 ], [ -89.7929053463114, 33.139410282714408 ], [ -89.791861054793614, 33.139861600302602 ], [ -89.79166791700753, 33.1405611379774 ], [ -89.792161990413788, 33.141063222064595 ], [ -89.792972719957717, 33.140993645040439 ], [ -89.794154004556333, 33.140525409037743 ], [ -89.794879394148253, 33.14058746455521 ], [ -89.795094989816448, 33.140963557661564 ], [ -89.795108464545706, 33.141646162531984 ], [ -89.794374091800933, 33.142048577240473 ], [ -89.793204036143365, 33.142225338258065 ], [ -89.792696488007834, 33.142684163067585 ], [ -89.792435976575447, 33.143560436570262 ], [ -89.79215076147274, 33.144769529202918 ], [ -89.792716700101735, 33.14540133458835 ], [ -89.794178708226639, 33.145160647358921 ], [ -89.794699731091427, 33.145314837691281 ], [ -89.794814266290146, 33.14579244992796 ], [ -89.794396549683029, 33.146553991620493 ], [ -89.793752008466683, 33.1470579217482 ], [ -89.793677897455737, 33.147697231923942 ], [ -89.794690747938589, 33.148265085879167 ], [ -89.795449824353668, 33.149067972450723 ], [ -89.794838969960466, 33.149613254222807 ], [ -89.794293243425358, 33.149884013567544 ], [ -89.794582950104498, 33.150590992361145 ], [ -89.795135414004235, 33.151412660023205 ], [ -89.795182575556652, 33.15290743614748 ], [ -89.79465930690364, 33.154281855613959 ], [ -89.794719943185328, 33.154759419032445 ], [ -89.795288127602532, 33.155509601986495 ], [ -89.795775463644162, 33.156549318629224 ], [ -89.795420629106928, 33.15698926734904 ], [ -89.794710960032475, 33.156883980676803 ], [ -89.794508839093552, 33.156274819591943 ], [ -89.793936163099929, 33.156182693010159 ], [ -89.793547641739551, 33.156564359647533 ], [ -89.793601540656596, 33.157464935917766 ], [ -89.794259556602213, 33.158401224614636 ], [ -89.794326930248516, 33.159155136561125 ], [ -89.793846331571515, 33.1593224627726 ], [ -89.792844710029726, 33.1593375033153 ], [ -89.79099418054443, 33.159219058971736 ], [ -89.790796551181927, 33.1588580847475 ], [ -89.790529302384911, 33.158423785664716 ], [ -89.790048703707896, 33.158547871336403 ], [ -89.789440095102918, 33.159269820852849 ], [ -89.788586695582993, 33.160589619448032 ], [ -89.787829864956123, 33.161529634824959 ], [ -89.786763115556226, 33.161822917560059 ], [ -89.786093870669561, 33.161992118691785 ], [ -89.785424625782895, 33.16219139960598 ], [ -89.784957501835152, 33.162166959518231 ], [ -89.784490377887408, 33.162174479545953 ], [ -89.784149018079447, 33.162324879965034 ], [ -89.783574096297599, 33.162928359052287 ], [ -89.782891376681675, 33.164161624269525 ], [ -89.782559000026552, 33.165718220845179 ], [ -89.782246835465315, 33.167336826379319 ], [ -89.780964490397238, 33.169724261990041 ], [ -89.780005538831446, 33.170961191247031 ], [ -89.779127435641215, 33.171901095424815 ], [ -89.777748521680095, 33.172940617707553 ], [ -89.775886763253752, 33.174012083468291 ], [ -89.774519078233681, 33.175483917710416 ], [ -89.774265304165922, 33.176681292084417 ], [ -89.774694249714088, 33.177299709804863 ], [ -89.775635234974203, 33.177735795056932 ], [ -89.776847960607753, 33.17792376216871 ], [ -89.777530680223705, 33.178376761251378 ], [ -89.777795683232512, 33.178694423111672 ], [ -89.77794165946618, 33.179068473174986 ], [ -89.7780764067588, 33.179780855562761 ], [ -89.778083144123428, 33.180028966274669 ], [ -89.748317467184123, 33.179983855288391 ], [ -89.748521833911269, 33.176374901141195 ], [ -89.731411173536998, 33.176758359576361 ], [ -89.73153020031215, 33.18014362326025 ], [ -89.698611436725585, 33.180583453583786 ], [ -89.698503638891481, 33.176747081411044 ], [ -89.680993228215797, 33.17704407261369 ], [ -89.681033652403585, 33.169252419634979 ], [ -89.672558047697905, 33.169541916839194 ], [ -89.672351435182563, 33.165864855330128 ], [ -89.663837652077319, 33.166009609645236 ], [ -89.663763541066373, 33.162071079108188 ], [ -89.629407473025225, 33.162843759430558 ], [ -89.629463617730494, 33.181782637865439 ], [ -89.541841944917465, 33.182011947097052 ], [ -89.526399905183453, 33.181226278546795 ], [ -89.526267403679043, 33.166605543723783 ], [ -89.537761347739348, 33.166974005670006 ], [ -89.538024104959959, 33.152377216588427 ], [ -89.541857665434932, 33.152315169409277 ], [ -89.541660036072429, 33.14497637075263 ], [ -89.550640943125416, 33.144995174505695 ], [ -89.549938011415591, 33.093115343603401 ], [ -89.563149983456782, 33.092688245205053 ], [ -89.563298205478659, 33.089386158923809 ], [ -89.56733388689257, 33.089145318148944 ], [ -89.567502321008348, 33.076338412554342 ], [ -89.595545478390335, 33.076449441347457 ], [ -89.595424205826987, 33.074590161049514 ], [ -89.610956077089412, 33.074624034928632 ], [ -89.610803363491115, 33.055874731049137 ], [ -89.62380647722874, 33.05562062250835 ], [ -89.623691942030021, 33.048456342143751 ], [ -89.654180762773024, 33.047897255285214 ], [ -89.653891056093912, 33.033380461627537 ], [ -89.662806835288791, 33.033276909571342 ] ] ], [ [ [ -86.952187627010559, 33.30374100743817 ], [ -86.952374027432001, 33.340728155509424 ], [ -86.957159802108151, 33.340739412525011 ], [ -86.95719348893131, 33.34413708856178 ], [ -86.961404341825613, 33.344084557859503 ], [ -86.961462732319077, 33.348881605939212 ], [ -86.971474456160607, 33.348964149623626 ], [ -86.974079570484534, 33.35230710307399 ], [ -86.977715501597018, 33.359883613806225 ], [ -86.975799844253629, 33.368978682299122 ], [ -86.986487550346439, 33.356238942388437 ], [ -86.991643880077291, 33.350984569496852 ], [ -86.991906637297902, 33.341268490616272 ], [ -86.996479062094068, 33.341486124642763 ], [ -86.996555418893209, 33.338086468950955 ], [ -86.999917363844034, 33.338660592304549 ], [ -87.003604948085339, 33.338621191803199 ], [ -87.008705133110922, 33.333823578499036 ], [ -87.047000313672953, 33.334294533073432 ], [ -87.039110859690169, 33.342139023459026 ], [ -87.036528203248324, 33.351335371141161 ], [ -87.036743798916518, 33.354734509582094 ], [ -87.032775491148911, 33.361273538358084 ], [ -87.023109618691791, 33.362074469954287 ], [ -87.017995958936936, 33.36519747004855 ], [ -87.013913115970624, 33.363584402914391 ], [ -87.011173254354048, 33.366375365296726 ], [ -87.010151420718358, 33.372671582650199 ], [ -87.00009927268907, 33.372990413825143 ], [ -86.996137702286092, 33.372555302754385 ], [ -86.981057234453942, 33.399794308415693 ], [ -86.973042016331391, 33.412362701574587 ], [ -86.984167651125205, 33.419041732530225 ], [ -86.982678693541772, 33.424524414954114 ], [ -86.979269587038544, 33.42383277256301 ], [ -86.980444134272531, 33.422119574999144 ], [ -86.97504076783855, 33.42156662108529 ], [ -86.974697162242364, 33.419159824722954 ], [ -86.976435402317136, 33.416865433369431 ], [ -86.96952062041764, 33.41288759490358 ], [ -86.968534719393318, 33.414392896392364 ], [ -86.962459862284462, 33.411391640553262 ], [ -86.951455500053981, 33.425395988981897 ], [ -86.948488813828192, 33.426419374412525 ], [ -86.946546207026287, 33.429633775825899 ], [ -86.943649140234996, 33.431483642672568 ], [ -86.941585260869729, 33.430934496852238 ], [ -86.937778649853271, 33.435573076659828 ], [ -86.93051577078117, 33.43515702022944 ], [ -86.930203606219933, 33.431395554669152 ], [ -86.934942219343668, 33.431451781064624 ], [ -86.934939973555444, 33.428237446978066 ], [ -86.942418448295754, 33.428423000696299 ], [ -86.943541342400906, 33.425354753418652 ], [ -86.939002604427898, 33.422539442737353 ], [ -86.948967166716983, 33.420994919268225 ], [ -86.939458499434579, 33.415761329650415 ], [ -86.935851763568834, 33.41920293770567 ], [ -86.935452013267394, 33.413538083306058 ], [ -86.930747086966832, 33.413824896529498 ], [ -86.931317517172246, 33.41037370199723 ], [ -86.926385766262428, 33.410133744209645 ], [ -86.92696742540889, 33.404181454126785 ], [ -86.932170916692158, 33.404370808847808 ], [ -86.932236044550265, 33.400167411904135 ], [ -86.936285200693433, 33.400188035668315 ], [ -86.939123876991246, 33.39498694228763 ], [ -86.939346210024055, 33.391998141460164 ], [ -86.942157936863353, 33.393181298870566 ], [ -86.942984386924749, 33.391908138335538 ], [ -86.944080331571371, 33.387302854083771 ], [ -86.950305656490315, 33.380268824109436 ], [ -86.952636784652611, 33.380608255844678 ], [ -86.952416697407998, 33.377442675295441 ], [ -86.948747079472383, 33.377212003488189 ], [ -86.949027802998657, 33.369884573331355 ], [ -86.939474219952046, 33.369518842062476 ], [ -86.939489940469514, 33.365777041518548 ], [ -86.934782768380728, 33.365626991022893 ], [ -86.934708657369796, 33.35515845462519 ], [ -86.893727514108264, 33.354985875476302 ], [ -86.893983533964231, 33.333009252629992 ], [ -86.909028069185027, 33.333059913677992 ], [ -86.908821456669671, 33.31620879992829 ], [ -86.913360194642692, 33.316154375685699 ], [ -86.913092945845676, 33.310210668585825 ], [ -86.921952580335287, 33.310173132046593 ], [ -86.922114277086436, 33.303765407990269 ], [ -86.952187627010559, 33.30374100743817 ] ] ], [ [ [ -85.940170331591801, 36.967604616514308 ], [ -85.943469394472743, 36.968313373604353 ], [ -85.942261160415597, 36.970339126470236 ], [ -85.948331525948035, 36.970592117505348 ], [ -85.948149617102999, 36.972312793087546 ], [ -85.946849305729245, 36.973651268778916 ], [ -85.945007759396802, 36.972793642291769 ], [ -85.941881622208058, 36.972129782517648 ], [ -85.937648311431644, 36.977178559783823 ], [ -85.941401023531057, 36.979946812526883 ], [ -85.954255915246804, 36.98557988688372 ], [ -85.956962090040221, 36.982078101171815 ], [ -85.960613741670159, 36.983540188063884 ], [ -85.954076252189978, 36.994565032899494 ], [ -85.947868893576711, 36.992364138012057 ], [ -85.945694970589145, 36.995038566749464 ], [ -85.953826969698639, 37.000141424353707 ], [ -85.956611747079407, 37.002150188239597 ], [ -85.947727408919476, 37.013464635410223 ], [ -85.945598401696103, 37.011111856899284 ], [ -85.935768586699638, 37.008091872863098 ], [ -85.934690608358693, 37.01027079264076 ], [ -85.932453803301229, 37.00961263991757 ], [ -85.93000364836378, 37.012596698157687 ], [ -85.933385805408491, 37.013410837934792 ], [ -85.933167963952101, 37.016434196982466 ], [ -85.936260414317672, 37.016930905796087 ], [ -85.934014626107384, 37.020899080198696 ], [ -85.936936396568981, 37.021142937749687 ], [ -85.936545629420394, 37.023823526147829 ], [ -85.939209134237814, 37.024067374312033 ], [ -85.937798779241731, 37.029659530257661 ], [ -85.940464529847361, 37.030383844803019 ], [ -85.939245066849168, 37.033182430898464 ], [ -85.941396531954638, 37.034320839680113 ], [ -85.939887362277318, 37.036226515712322 ], [ -85.935040951319479, 37.034543141135615 ], [ -85.936177320153902, 37.032526269422739 ], [ -85.932161850833879, 37.03031571650147 ], [ -85.930145133021043, 37.034557483142656 ], [ -85.923344886320251, 37.030796199008059 ], [ -85.925817499139796, 37.025682848629899 ], [ -85.922778947691256, 37.024705679035776 ], [ -85.921211387520472, 37.027000662946165 ], [ -85.919174457613721, 37.025630852766291 ], [ -85.91734863179876, 37.027696316249724 ], [ -85.910121685338012, 37.024302256730117 ], [ -85.914541396535881, 37.018910536102311 ], [ -85.90989486072877, 37.01665475761456 ], [ -85.906836097186357, 37.018150249403831 ], [ -85.901704471125825, 37.015917759827339 ], [ -85.900624246996671, 37.018051626751095 ], [ -85.895867667567245, 37.016367849350004 ], [ -85.892276652218982, 37.02107121502182 ], [ -85.88361913866828, 37.017953003970348 ], [ -85.886296118214943, 37.013046807350356 ], [ -85.880594061948997, 37.011181795725513 ], [ -85.882642220796797, 37.007489296368554 ], [ -85.885049705758234, 37.008147467477563 ], [ -85.889660308953978, 37.000100172396351 ], [ -85.897693493382221, 36.989104831116052 ], [ -85.894095740669314, 36.987181828353073 ], [ -85.89855812184318, 36.979245339990833 ], [ -85.902894738877279, 36.980589075827332 ], [ -85.904419629072066, 36.978768119684432 ], [ -85.910604529803223, 36.981726478537958 ], [ -85.917366598104437, 36.972398915556404 ], [ -85.929098595715047, 36.977539173914771 ], [ -85.932509948006484, 36.978133017341506 ], [ -85.93503421395485, 36.976281502293986 ], [ -85.938654424549867, 36.972657282378265 ], [ -85.937241823765575, 36.971636369474886 ], [ -85.940170331591801, 36.967604616514308 ] ] ], [ [ [ -86.786289006127561, 33.565552815972033 ], [ -86.785812899026993, 33.568842519020691 ], [ -86.784743903838887, 33.571336846257189 ], [ -86.784898863225393, 33.574731111293389 ], [ -86.787917202580033, 33.574983711128411 ], [ -86.787566859619233, 33.580314330792035 ], [ -86.788757127370687, 33.584703565444421 ], [ -86.790558249515342, 33.589380679750477 ], [ -86.784582207087738, 33.600533638578028 ], [ -86.778294000098896, 33.608660808895891 ], [ -86.780472414662896, 33.613104709674253 ], [ -86.783322319901757, 33.614391452984655 ], [ -86.778008784996203, 33.624639827179394 ], [ -86.763779470895741, 33.62416296819238 ], [ -86.762517337921565, 33.611327924981836 ], [ -86.763337050618318, 33.602250789252111 ], [ -86.772257321389631, 33.594177264813133 ], [ -86.767087516929521, 33.590718287815406 ], [ -86.765827629743526, 33.59199975301231 ], [ -86.769221015729286, 33.594405488812413 ], [ -86.760660071071641, 33.602634244154764 ], [ -86.757807920044556, 33.601162142138428 ], [ -86.758807295798135, 33.599171865149479 ], [ -86.755546411316786, 33.599175606314731 ], [ -86.750848222380839, 33.606221803022144 ], [ -86.743980602033744, 33.609098475960764 ], [ -86.740389586685481, 33.614200687020684 ], [ -86.740847727480372, 33.577586381936669 ], [ -86.756700746456872, 33.577490958296579 ], [ -86.756941045795386, 33.569546102492176 ], [ -86.764879907118797, 33.569452541190856 ], [ -86.764868678177749, 33.571540805312004 ], [ -86.769656698642095, 33.571355558117141 ], [ -86.770254078306039, 33.573642116875355 ], [ -86.776746652022013, 33.573842328220024 ], [ -86.786289006127561, 33.565552815972033 ] ] ] ] } } +] +} diff --git a/client/src/assets/vue.svg b/client/src/assets/vue.svg new file mode 100644 index 0000000..770e9d3 --- /dev/null +++ b/client/src/assets/vue.svg @@ -0,0 +1 @@ + \ No newline at end of file diff --git a/client/src/components/Charts/AddEditChart.vue b/client/src/components/Charts/AddEditChart.vue new file mode 100644 index 0000000..25337d1 --- /dev/null +++ b/client/src/components/Charts/AddEditChart.vue @@ -0,0 +1,295 @@ + + + + + diff --git a/client/src/components/Charts/ChartRenderer.vue b/client/src/components/Charts/ChartRenderer.vue new file mode 100644 index 0000000..5e52387 --- /dev/null +++ b/client/src/components/Charts/ChartRenderer.vue @@ -0,0 +1,295 @@ + + + diff --git a/client/src/components/Charts/Charts.vue b/client/src/components/Charts/Charts.vue new file mode 100644 index 0000000..f174a27 --- /dev/null +++ b/client/src/components/Charts/Charts.vue @@ -0,0 +1,246 @@ + + + diff --git a/client/src/components/Charts/chartUtils.ts b/client/src/components/Charts/chartUtils.ts new file mode 100644 index 0000000..d8b3613 --- /dev/null +++ b/client/src/components/Charts/chartUtils.ts @@ -0,0 +1,341 @@ +/* eslint-disable no-param-reassign */ +/* eslint-disable @typescript-eslint/naming-convention */ +/* eslint-disable @typescript-eslint/no-use-before-define */ +/* eslint-disable vue/max-len */ +/* eslint-disable no-underscore-dangle */ +/* eslint-disable func-names */ +// chartUtils.ts +import * as d3 from 'd3'; + +// Define types for the data structure +export interface HistogramData { + bin_edges: number[]; + counts: number[]; +} + +export interface StringData { + value: string; + count: number; +} + +// Type for the renderBarChart function arguments +interface BarChartArgs { + chartElement: HTMLDivElement | null; + chartData: HistogramData; + xAxisLabel?: string; // Optional X-axis label + yAxisLabel?: string; // Optional Y-axis label +} + +// Type for the renderPieChart function arguments +interface PieChartArgs { + chartElement: HTMLDivElement | null; + chartData: StringData[]; +} + +// Bar chart rendering function +export const renderBarChart = ({ + chartElement, + chartData, + xAxisLabel, + yAxisLabel, +}: BarChartArgs): void => { + if (!chartElement || !('bin_edges' in chartData)) return; + + // Clear previous chart + chartElement.innerHTML = ''; + + const { bin_edges, counts } = chartData; + + const svg = d3 + .select(chartElement) + .append('svg') + .attr('width', '100%') + .attr('height', 400); + + const margin = { + top: 20, + right: 30, + bottom: 60, // Increased to accommodate the X-axis label + left: 50, // Increased to accommodate the Y-axis label + }; + const width = chartElement.clientWidth - margin.left - margin.right; + const height = 400 - margin.top - margin.bottom; + + const x = d3 + .scaleLinear() + .domain([bin_edges[0], bin_edges[bin_edges.length - 1]]) + .range([0, width]); + + const y = d3.scaleLinear().domain([0, d3.max(counts)!]).nice().range([height, 0]); + + const g = svg + .append('g') + .attr('transform', `translate(${margin.left},${margin.top})`); + + g.append('g') + .attr('class', 'axis axis--x') + .attr('transform', `translate(0,${height})`) + .call(d3.axisBottom(x)); + + g.append('g').attr('class', 'axis axis--y').call(d3.axisLeft(y)); + + // Append optional X-axis label + if (xAxisLabel) { + svg.append('text') + .attr('class', 'x-axis-label') + .attr('x', margin.left + width / 2) // Centered relative to the chart + .attr('y', height + margin.top + 40) // Positioned below the chart + .attr('text-anchor', 'middle') + .text(xAxisLabel); + } + + // Append optional Y-axis label + if (yAxisLabel) { + svg.append('text') + .attr('class', 'y-axis-label') + .attr('transform', `translate(${margin.left - 30},${margin.top + height / 2}) rotate(-90)`) // Rotated for vertical alignment + .attr('text-anchor', 'middle') + .text(yAxisLabel); + } + + g.selectAll('.bar') + .data(counts) + .enter() + .append('rect') + .attr('class', 'bar') + .attr('x', (d, i) => x(bin_edges[i])) + .attr('y', height) // Start from the bottom of the chart + .attr('width', (d, i) => x(bin_edges[i + 1]) - x(bin_edges[i]) - 1) + .attr('height', 0) // Start with height 0 for the transition effect + .attr('fill', '#4285f4') + .transition() // Transition for ease effect + .duration(1000) // Duration of the transition + .attr('y', (d) => y(d)) // Transition to the final y position + .attr('height', (d) => height - y(d)); // Transition to the final height +}; +// Pie chart rendering function +export const renderPieChart = ({ + chartElement, + chartData, + showLabels = true, // Option to enable or disable labels + showHoverLabel = true, // Option to enable hover labels +}: PieChartArgs & { showLabels?: boolean, showHoverLabel?: boolean }): void => { + if (!chartElement || !Array.isArray(chartData)) return; + + // eslint-disable-next-line no-param-reassign + chartElement.innerHTML = ''; // Clear previous chart + + const data = chartData.map((d) => d.count); + const labels = chartData.map((d) => d.value); + const total = d3.sum(data); // Calculate total count for percentage + + const svg = d3 + .select(chartElement) + .append('svg') + .attr('width', '100%') + .attr('height', 400) + .append('g') + .attr('transform', 'translate(200, 200)'); + + const radius = Math.min(400, 400) / 2; + + const color = d3.scaleOrdinal(d3.schemeCategory10); + + const pie = d3.pie().value((d) => d)(data); + + const arc = d3.arc>().innerRadius(0).outerRadius(radius); + + svg + .selectAll('path') + .data(pie) + .enter() + .append('path') + .attr('d', arc) + .attr('fill', (d, i) => color(i.toString())) + .attr('opacity', 0) // Set initial opacity to 0 for fade-in effect + .transition() // Transition for ease effect + .duration(1000) // Duration of the transition + .attr('opacity', 1) // Fade in + .attrTween('d', function (d) { + const interpolate = d3.interpolate(this._current || d, d); // Interpolate between previous and current data + this._current = interpolate(0); // Store the current value + return (t: number) => arc(interpolate(t)); // Return the interpolated arc + }); + + // Add event handlers after paths are created + // Create tooltip div + const tooltip = d3.select('body') + .append('div') + .attr('class', 'tooltip') + .style('position', 'absolute') + .style('z-index', '9999') + .style('visibility', 'hidden') + .style('background', '#333') + .style('color', '#fff') + .style('padding', '5px 10px') + .style('border-radius', '4px') + .style('font-size', '12px') + .style('pointer-events', 'none') + .style('opacity', 0); // Hidden by default + + // Tooltip event handlers + if (showHoverLabel) { + svg.selectAll('path') + .on('mouseover', (event, d) => { + // Update tooltip content + tooltip.html(`Label: ${labels[d.index]}
Count: ${data[d.index]}
Percentage: ${((data[d.index] / total) * 100).toFixed(1)}%`) + .style('visibility', 'visible') + .style('top', `${event.clientY - 20}px`) // Adjust with SVG top offset + .style('left', `${event.clientX + 10}px`) // Adjust with SVG left offset + .style('opacity', 1); // Show tooltip with transition + }) + .on('mousemove', (event) => { + tooltip.style('top', `${event.clientY - 20}px`) + .style('left', `${event.clientX + 10}px`); + }) + .on('mouseout', () => { + tooltip + .style('visibility', 'hidden'); // Hide tooltip on mouse out + }); + } + if (showLabels) { + svg + .selectAll('g.label') + .data(pie) + .enter() + .append('g') + .attr('transform', (d) => `translate(${arc.centroid(d)})`) + .each(function (d, i) { + const group = d3.select(this); + const count = data[i]; + const percentage = ((count / total) * 100).toFixed(1); + + group.append('text') + .attr('dy', '-0.5em') + .style('text-anchor', 'middle') + .text(labels[i]) + .attr('opacity', 0) + .transition() + .duration(1000) + .attr('opacity', 1); + + group.append('text') + .attr('dy', '0.5em') + .style('text-anchor', 'middle') + .text(count) + .attr('opacity', 0) + .transition() + .duration(1000) + .attr('opacity', 1); + + group.append('text') + .attr('dy', '1.5em') + .style('text-anchor', 'middle') + .text(`${percentage}%`) + .attr('opacity', 0) + .transition() + .duration(1000) + .attr('opacity', 1); + }); + } +}; + +export const renderStyledPieChart = ({ chartElement, chartData }: PieChartArgs): void => { + if (!chartElement || !Array.isArray(chartData)) return; + + // eslint-disable-next-line no-param-reassign + chartElement.innerHTML = ''; // Clear any previous chart + + const data = chartData.map((d) => d.count); + const labels = chartData.map((d) => d.value); + const total = d3.sum(data); // Calculate total count for percentage + + // Set dimensions and radius for the chart + const width = 500; + const height = 400; + const radius = Math.min(width, height) / 2; + + // Set up color scheme + const color = d3.scaleOrdinal(d3.schemeCategory10); + + // Create the SVG container + const svg = d3 + .select(chartElement) + .append('svg') + .attr('width', width) + .attr('height', height) + .append('g') + .attr('transform', `translate(${width / 2}, ${height / 2})`); + + // Set up the pie layout + const pie = d3.pie().value((d) => d)(data); + + const arc = d3.arc>() + .innerRadius(0) + .outerRadius(radius * 0.8); // Slice radius + + const outerArc = d3.arc>() + .innerRadius(radius * 0.9) // Line label outer arc + .outerRadius(radius * 0.9); + + // Append pie slices + svg.selectAll('path.slice') + .data(pie) + .enter() + .append('path') + .attr('class', 'slice') + .attr('d', arc) + .style('fill', (d, i) => color(i.toString())) + .style('stroke', 'white') + .style('stroke-width', 2) + .attr('opacity', 0) + .transition() + .duration(1000) + .attr('opacity', 1) + .attrTween('d', function (d) { + const interpolate = d3.interpolate(this._current || d, d); + this._current = interpolate(0); + return (t: number) => arc(interpolate(t)); + }); + + // Append labels + svg.selectAll('.label') + .data(pie) + .enter() + .append('g') + .attr('class', 'label') + .each(function (d, i) { + const group = d3.select(this); + const percentage = ((data[i] / total) * 100).toFixed(1); + + group.append('text') + .attr('dy', '.35em') + .attr('transform', `translate(${outerArc.centroid(d)})`) + .style('text-anchor', (subD) => (midAngle(subD) < Math.PI ? 'start' : 'end')) + .text(`${labels[i]} (${percentage}%)`) + .attr('opacity', 0) + .transition() + .duration(1000) + .attr('opacity', 1); + }); + + // Append lines + svg.selectAll('polyline') + .data(pie) + .enter() + .append('polyline') + .attr('points', (d) => { + const pos = outerArc.centroid(d); + pos[0] = radius * (midAngle(d) < Math.PI ? 1 : -1); + return [arc.centroid(d), outerArc.centroid(d), pos]; + }) + .style('opacity', 0.3) + .style('stroke', 'black') + .style('stroke-width', 2) + .style('fill', 'none'); + + // Helper function to calculate the middle angle of a slice + function midAngle(d: d3.PieArcDatum): number { + return d.startAngle + (d.endAngle - d.startAngle) / 2; + } +}; diff --git a/client/src/components/ColorKey.vue b/client/src/components/ColorKey.vue new file mode 100644 index 0000000..e10fffa --- /dev/null +++ b/client/src/components/ColorKey.vue @@ -0,0 +1,411 @@ + + + + + diff --git a/client/src/components/Coloring/ColorAttributeValue.vue b/client/src/components/Coloring/ColorAttributeValue.vue new file mode 100644 index 0000000..0971f21 --- /dev/null +++ b/client/src/components/Coloring/ColorAttributeValue.vue @@ -0,0 +1,172 @@ + + + + + diff --git a/client/src/components/Coloring/ColorBoolean.vue b/client/src/components/Coloring/ColorBoolean.vue new file mode 100644 index 0000000..0dca2a4 --- /dev/null +++ b/client/src/components/Coloring/ColorBoolean.vue @@ -0,0 +1,245 @@ + + + + + diff --git a/client/src/components/Coloring/ColorCategoricalLinearNumber.vue b/client/src/components/Coloring/ColorCategoricalLinearNumber.vue new file mode 100644 index 0000000..24643f6 --- /dev/null +++ b/client/src/components/Coloring/ColorCategoricalLinearNumber.vue @@ -0,0 +1,564 @@ + + + + + diff --git a/client/src/components/Coloring/ColorCategoricalString.vue b/client/src/components/Coloring/ColorCategoricalString.vue new file mode 100644 index 0000000..cee7752 --- /dev/null +++ b/client/src/components/Coloring/ColorCategoricalString.vue @@ -0,0 +1,327 @@ + + + + + diff --git a/client/src/components/Coloring/ColorSaver.vue b/client/src/components/Coloring/ColorSaver.vue new file mode 100644 index 0000000..e85fd68 --- /dev/null +++ b/client/src/components/Coloring/ColorSaver.vue @@ -0,0 +1,125 @@ + + + + + diff --git a/client/src/components/Coloring/ColorSelector.vue b/client/src/components/Coloring/ColorSelector.vue new file mode 100644 index 0000000..3f1a52e --- /dev/null +++ b/client/src/components/Coloring/ColorSelector.vue @@ -0,0 +1,261 @@ + + + + + + diff --git a/client/src/components/DataSelection/Collection.vue b/client/src/components/DataSelection/Collection.vue new file mode 100644 index 0000000..a77ee23 --- /dev/null +++ b/client/src/components/DataSelection/Collection.vue @@ -0,0 +1,106 @@ + + + + + diff --git a/client/src/components/DataSelection/Context.vue b/client/src/components/DataSelection/Context.vue new file mode 100644 index 0000000..a7595dd --- /dev/null +++ b/client/src/components/DataSelection/Context.vue @@ -0,0 +1,364 @@ + + + + + diff --git a/client/src/components/DataSelection/ContextEditor.vue b/client/src/components/DataSelection/ContextEditor.vue new file mode 100644 index 0000000..2d9406d --- /dev/null +++ b/client/src/components/DataSelection/ContextEditor.vue @@ -0,0 +1,287 @@ + + + + + diff --git a/client/src/components/DataSelection/ContextMap.vue b/client/src/components/DataSelection/ContextMap.vue new file mode 100644 index 0000000..13004c4 --- /dev/null +++ b/client/src/components/DataSelection/ContextMap.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/client/src/components/DataSelection/DatasetEditor.vue b/client/src/components/DataSelection/DatasetEditor.vue new file mode 100644 index 0000000..045c83b --- /dev/null +++ b/client/src/components/DataSelection/DatasetEditor.vue @@ -0,0 +1,460 @@ + + + diff --git a/client/src/components/DataSelection/DatasetItem.vue b/client/src/components/DataSelection/DatasetItem.vue new file mode 100644 index 0000000..14a3f39 --- /dev/null +++ b/client/src/components/DataSelection/DatasetItem.vue @@ -0,0 +1,114 @@ + + + + + diff --git a/client/src/components/DataSelection/Datasets.vue b/client/src/components/DataSelection/Datasets.vue new file mode 100644 index 0000000..1ae12c6 --- /dev/null +++ b/client/src/components/DataSelection/Datasets.vue @@ -0,0 +1,316 @@ + + + + + diff --git a/client/src/components/DataSelection/EditCollection.vue b/client/src/components/DataSelection/EditCollection.vue new file mode 100644 index 0000000..5f37b25 --- /dev/null +++ b/client/src/components/DataSelection/EditCollection.vue @@ -0,0 +1,111 @@ + + + + + diff --git a/client/src/components/DataSelection/NetCDFDataConfigurator.vue b/client/src/components/DataSelection/NetCDFDataConfigurator.vue new file mode 100644 index 0000000..29a3d47 --- /dev/null +++ b/client/src/components/DataSelection/NetCDFDataConfigurator.vue @@ -0,0 +1,777 @@ + + + + + + diff --git a/client/src/components/DataSelection/NetCDFMapSelection.vue b/client/src/components/DataSelection/NetCDFMapSelection.vue new file mode 100644 index 0000000..71e15a4 --- /dev/null +++ b/client/src/components/DataSelection/NetCDFMapSelection.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/client/src/components/DataSelection/Selected.vue b/client/src/components/DataSelection/Selected.vue new file mode 100644 index 0000000..0fb802b --- /dev/null +++ b/client/src/components/DataSelection/Selected.vue @@ -0,0 +1,148 @@ + + + + + diff --git a/client/src/components/DataSelection/UploadFile.vue b/client/src/components/DataSelection/UploadFile.vue new file mode 100644 index 0000000..dc4a469 --- /dev/null +++ b/client/src/components/DataSelection/UploadFile.vue @@ -0,0 +1,136 @@ + + + diff --git a/client/src/components/DataSelection/mapbox-draw-rectangle.js b/client/src/components/DataSelection/mapbox-draw-rectangle.js new file mode 100644 index 0000000..aae7a56 --- /dev/null +++ b/client/src/components/DataSelection/mapbox-draw-rectangle.js @@ -0,0 +1,1112 @@ +/* eslint-disable no-use-before-define */ +/* eslint-disable default-case */ +/* eslint-disable no-multi-assign */ +/* eslint-disable consistent-return */ +/* eslint-disable prefer-destructuring */ +/* eslint-disable no-underscore-dangle */ +/* eslint-disable @typescript-eslint/no-unused-vars */ +/* eslint-disable func-names */ +/* eslint-disable no-plusplus */ +/* eslint-disable camelcase */ +/* eslint-disable no-param-reassign */ +/*! + * Mapbox GL Draw Rotate Scale Rect Mode + * Author: Andrey Drykovanov + * Repository: https://github.com/drykovanov/mapbox-gl-draw-rotate-scale-rect-mode + * License: ISC License + * Description: A Mapbox GL JS plugin for adding rotate and scale functionality to the rectangle mode in Mapbox Draw. + * Modifications: Some minor modifications to work with newer instances of mapbox-gl-draw + */ + +import MapboxDraw from '@mapbox/mapbox-gl-draw'; + +import { lineString, point } from '@turf/helpers'; +import bearing from '@turf/bearing'; +// import centroid from '@turf/centroid'; +import center from '@turf/center'; +import midpoint from '@turf/midpoint'; +import distance from '@turf/distance'; +import destination from '@turf/destination'; +import transformRotate from '@turf/transform-rotate'; +import transformScale from '@turf/transform-scale'; + +const Constants = MapboxDraw.constants; +const { + doubleClickZoom, + createSupplementaryPoints, + CommonSelectors, + moveFeatures, +} = MapboxDraw.lib; + +export const TxRectMode = {}; + +export const TxCenter = { + Center: 0, // rotate or scale around center of polygon + Opposite: 1, // rotate or scale around opposite side of polygon +}; + +function parseTxCenter(value, defaultTxCenter = TxCenter.Center) { + if (value === undefined || value == null) return defaultTxCenter; + + if (value === TxCenter.Center || value === TxCenter.Opposite) return value; + + if (value === 'center') return TxCenter.Center; + + if (value === 'opposite') return TxCenter.Opposite; + + throw Error(`Invalid TxCenter: ${value}`); +} + +/* + opts = { + featureId: ..., + + canScale: default true, + canRotate: default true, + canResize: default false, + + rotatePivot: default 'center' or 'opposite', + scaleCenter: default 'center' or 'opposite', + + canSelectFeatures: default true, // can exit to simple_select mode + } + */ +TxRectMode.onSetup = function (opts) { + const featureId = (opts.featureIds && Array.isArray(opts.featureIds) && opts.featureIds.length > 0) + ? opts.featureIds[0] : opts.featureId; + + const feature = this.getFeature(featureId); + + if (!feature) { + throw new Error('You must provide a valid featureId to enter tx_poly mode'); + } + + if (feature.type !== Constants.geojsonTypes.POLYGON) { + throw new TypeError('tx_poly mode can only handle polygons'); + } + if (feature.coordinates === undefined + || feature.coordinates.length !== 1 + || feature.coordinates[0].length <= 2) { + throw new TypeError('tx_poly mode can only handle polygons'); + } + + const state = { + featureId, + feature, + + canTrash: opts.canTrash !== undefined ? opts.canTrash : true, + + canScale: opts.canScale !== undefined ? opts.canScale : true, + canRotate: opts.canRotate !== undefined ? opts.canRotate : true, + canResize: opts.canResize !== undefined ? opts.canResize : false, + + singleRotationPoint: opts.singleRotationPoint !== undefined ? opts.singleRotationPoint : false, + rotationPointRadius: opts.rotationPointRadius !== undefined ? opts.rotationPointRadius : 1.0, + + rotatePivot: parseTxCenter(opts.rotatePivot, TxCenter.Center), + scaleCenter: parseTxCenter(opts.scaleCenter, TxCenter.Center), + + canSelectFeatures: opts.canSelectFeatures !== undefined ? opts.canSelectFeatures : true, + // selectedFeatureMode: opts.selectedFeatureMode != undefined ? opts.selectedFeatureMode : 'simple_select', + + dragMoveLocation: opts.startPos || null, + dragMoving: false, + canDragMove: false, + selectedCoordPaths: opts.coordPath ? [opts.coordPath] : [], + }; + + if (!(state.canRotate || state.canScale)) { + // eslint-disable-next-line no-console + console.warn('Non of canScale or canRotate is true'); + } + + this.setSelectedCoordinates(this.pathsToCoordinates(featureId, state.selectedCoordPaths)); + this.setSelected(featureId); + doubleClickZoom.disable(this); + + this.setActionableState({ + combineFeatures: false, + uncombineFeatures: false, + trash: state.canTrash, + }); + + return state; +}; + +TxRectMode.createEdgeCenters = function (state, geojson) { + const { coordinates } = geojson.geometry; + const featureId = geojson.properties.id; + const edgeCenters = []; + + const corners = coordinates[0]; + for (let i = 0; i < corners.length - 1; i++) { + const edgeMidpoint = midpoint( + point(corners[i]), + point(corners[i + 1]), + ).geometry.coordinates; + + edgeCenters.push({ + type: Constants.geojsonTypes.FEATURE, + properties: { + meta: 'edge-center', + parent: featureId, + coord_path: `${i}`, + }, + geometry: { + type: Constants.geojsonTypes.POINT, + coordinates: edgeMidpoint, + }, + }); + } + + return edgeCenters; +}; + +TxRectMode.onEdgeCenter = function (state, e) { + this.computeAxes(state, state.feature.toGeoJSON()); + this.startDragging(state, e); + const about = e.featureTarget.properties; + state.selectedCoordPaths = [about.coord_path]; + state.txMode = TxMode.Scale; +}; + +TxRectMode.onTouchStart = TxRectMode.onMouseDown = function (state, e) { + if (isVertex(e)) return this.onVertex(state, e); + if (isRotatePoint(e)) return this.onRotatePoint(state, e); + if (e.featureTarget && e.featureTarget.properties.meta === 'edge-center') return this.onEdgeCenter(state, e); + if (CommonSelectors.isActiveFeature(e)) return this.onFeature(state, e); +}; + +TxRectMode.dragScalePoint = function (state, e, delta) { + if (state.scaling === undefined || state.scaling == null) { + // eslint-disable-next-line no-console + console.error('state.scaling required'); + return; + } + + const polygon = state.feature.toGeoJSON(); + + const cIdx = this.coordinateIndex(state.selectedCoordPaths); + const cCenter = state.scaling.centers[cIdx]; + const subcenter = point(cCenter); + const m1 = point([e.lngLat.lng, e.lngLat.lat]); + + const dist = distance(subcenter, m1, { units: 'meters' }); + let scale = dist / state.scaling.distances[cIdx]; + + if (CommonSelectors.isShiftDown(e)) { + scale = 0.05 * Math.round(scale / 0.05); + } + + const scaledFeature = transformScale( + state.scaling.feature0, + scale, + { + origin: cCenter, + mutate: false, + }, + ); + + state.feature.incomingCoords(scaledFeature.geometry.coordinates); + this.fireUpdate(); +}; + +TxRectMode.toDisplayFeatures = function (state, geojson, push) { + if (state.featureId === geojson.properties.id) { + geojson.properties.active = Constants.activeStates.ACTIVE; + push(geojson); + + const suppPoints = createSupplementaryPoints(geojson, { + map: this.map, + midpoints: false, + selectedPaths: state.selectedCoordPaths, + }); + + if (state.canScale) { + this.computeBisectrix(suppPoints); + suppPoints.forEach(push); + } + + if (state.canRotate) { + const rotPoints = this.createRotationPoints(state, geojson, suppPoints); + rotPoints.forEach(push); + } + if (state.canResize) { + const resizePoints = this.createResizePoints(state, geojson); + resizePoints.forEach(push); + } + } else { + geojson.properties.active = Constants.activeStates.INACTIVE; + push(geojson); + } + + // this.fireActionable(state); + this.setActionableState({ + combineFeatures: false, + uncombineFeatures: false, + trash: state.canTrash, + }); + + // this.fireUpdate(); +}; + +TxRectMode.onStop = function () { + doubleClickZoom.enable(this); + this.clearSelectedCoordinates(); +}; + +// TODO why I need this? +TxRectMode.pathsToCoordinates = function (featureId, paths) { + return paths.map((coord_path) => ({ feature_id: featureId, coord_path })); +}; + +TxRectMode.createResizePoints = function (state, geojson) { + const { coordinates } = geojson.geometry; + const featureId = geojson.properties && geojson.properties.id; + + const resizeWidgets = []; + const corners = coordinates[0]; + + for (let i = 0; i < corners.length - 1; i++) { + const c1 = corners[i]; + const c2 = corners[(i + 1) % (corners.length - 1)]; + const midpointCoord = midpoint(point(c1), point(c2)).geometry.coordinates; + + resizeWidgets.push({ + type: Constants.geojsonTypes.FEATURE, + properties: { + meta: Constants.meta.MIDPOINT, + parent: featureId, + lng: midpointCoord[0], + lat: midpointCoord[1], + coord_path: `0.${i}`, + }, + geometry: { + type: Constants.geojsonTypes.POINT, + coordinates: midpointCoord, + }, + }); + } + + return resizeWidgets; +}; + +TxRectMode.computeBisectrix = function (points) { + for (let i1 = 0; i1 < points.length; i1++) { + const i0 = (i1 - 1 + points.length) % points.length; + const i2 = (i1 + 1) % points.length; + // console.log('' + i0 + ' -> ' + i1 + ' -> ' + i2); + + const l1 = lineString([points[i0].geometry.coordinates, points[i1].geometry.coordinates]); + const l2 = lineString([points[i1].geometry.coordinates, points[i2].geometry.coordinates]); + const a1 = bearing(points[i0].geometry.coordinates, points[i1].geometry.coordinates); + const a2 = bearing(points[i2].geometry.coordinates, points[i1].geometry.coordinates); + // console.log('a1 = ' +a1 + ', a2 = ' + a2); + + let a = (a1 + a2) / 2.0; + + if (a < 0.0) a += 360; + if (a > 360) a -= 360; + + points[i1].properties.heading = a; + } +}; + +TxRectMode._createRotationPoint = function (rotationWidgets, featureId, v1, v2, rotCenter, radiusScale) { + const cR0 = midpoint(v1, v2).geometry.coordinates; + const heading = bearing(rotCenter, cR0); + const distance0 = distance(rotCenter, cR0); + const distance1 = radiusScale * distance0; // TODO depends on map scale + const cR1 = destination(rotCenter, distance1, heading, {}).geometry.coordinates; + + rotationWidgets.push({ + type: Constants.geojsonTypes.FEATURE, + properties: { + meta: Constants.meta.MIDPOINT, + parent: featureId, + lng: cR1[0], + lat: cR1[1], + coord_path: v1.properties.coord_path, + heading, + }, + geometry: { + type: Constants.geojsonTypes.POINT, + coordinates: cR1, + }, + }); +}; + +TxRectMode.createRotationPoints = function (state, geojson, suppPoints) { + const { type, coordinates } = geojson.geometry; + const featureId = geojson.properties && geojson.properties.id; + + const rotationWidgets = []; + if (type !== Constants.geojsonTypes.POLYGON) { + return; + } + + const corners = suppPoints.slice(0); + corners[corners.length] = corners[0]; + + let v1 = null; + + const rotCenter = this.computeRotationCenter(state, geojson); + + if (state.singleRotationPoint) { + this._createRotationPoint(rotationWidgets, featureId, corners[0], corners[1], rotCenter, state.rotationPointRadius); + } else { + corners.forEach((v2) => { + if (v1 != null) { + this._createRotationPoint(rotationWidgets, featureId, v1, v2, rotCenter, state.rotationPointRadius); + } + + v1 = v2; + }); + } + + return rotationWidgets; +}; + +TxRectMode.startDragging = function (state, e) { + this.map.dragPan.disable(); + state.canDragMove = true; + state.dragMoveLocation = e.lngLat; +}; + +TxRectMode.stopDragging = function (state) { + this.map.dragPan.enable(); + state.dragMoving = false; + state.canDragMove = false; + state.dragMoveLocation = null; + state.resizing = false; + state.resizePoint = null; +}; + +const isResizePoint = CommonSelectors.isOfMetaType(Constants.meta.MIDPOINT); +const isRotatePoint = CommonSelectors.isOfMetaType(Constants.meta.MIDPOINT); +const isVertex = CommonSelectors.isOfMetaType(Constants.meta.VERTEX); + +TxRectMode.onTouchStart = TxRectMode.onMouseDown = function (state, e) { + if (isVertex(e)) return this.onVertex(state, e); + if (isRotatePoint(e) && TxRectMode.canRotate) return this.onRotatePoint(state, e); + if (isResizePoint(e)) return this.onResizePoint(state, e); + if (CommonSelectors.isActiveFeature(e)) return this.onFeature(state, e); + // if (isMidpoint(e)) return this.onMidpoint(state, e); +}; + +const TxMode = { + Scale: 1, + Rotate: 2, + Resize: 3, +}; + +TxRectMode.onResizePoint = function (state, e) { + const about = e.featureTarget.properties; + + state.resizing = true; + state.resizePoint = { + index: about.coord_path, // Index of the corner being dragged + center: this.computeRotationCenter(state, state.feature.toGeoJSON()).geometry.coordinates, // Center of the box + }; + + this.startDragging(state, e); +}; + +TxRectMode.onVertex = function (state, e) { + // console.log('onVertex()'); + // convert internal MapboxDraw feature to valid GeoJSON: + this.computeAxes(state, state.feature.toGeoJSON()); + + this.startDragging(state, e); + const about = e.featureTarget.properties; + state.selectedCoordPaths = [about.coord_path]; + state.txMode = TxMode.Scale; +}; + +TxRectMode.onRotatePoint = function (state, e) { + // console.log('onRotatePoint()'); + // convert internal MapboxDraw feature to valid GeoJSON: + this.computeAxes(state, state.feature.toGeoJSON()); + + this.startDragging(state, e); + const about = e.featureTarget.properties; + state.selectedCoordPaths = [about.coord_path]; + state.txMode = TxMode.Rotate; +}; + +TxRectMode.onFeature = function (state, e) { + state.selectedCoordPaths = []; + this.startDragging(state, e); +}; + +TxRectMode.coordinateIndex = function (coordPaths) { + if (coordPaths.length >= 1) { + const parts = coordPaths[0].split('.'); + return parseInt(parts[parts.length - 1], 10); + } + return 0; +}; + +TxRectMode.computeRotationCenter = function (state, polygon) { + const center0 = center(polygon); + return center0; +}; + +TxRectMode.computeAxes = function (state, polygon) { + // TODO check min 3 points + const center0 = this.computeRotationCenter(state, polygon); + const corners = polygon.geometry.coordinates[0].slice(0); + + const n = corners.length - 1; + const iHalf = Math.floor(n / 2); + + // var c0 = corners[corners.length - 1]; + // var headings = corners.map((c1) => { + // var rotPoint = midpoint(point(c0),point(c1)); + // var heading = bearing(center0, rotPoint); + // c0 = c1; + // return heading; + // }); + // headings = headings.slice(1); + + const rotateCenters = []; + const headings = []; + + for (let i1 = 0; i1 < n; i1++) { + let i0 = i1 - 1; + if (i0 < 0) i0 += n; + + const c0 = corners[i0]; + const c1 = corners[i1]; + const rotPoint = midpoint(point(c0), point(c1)); + + let rotCenter = center0; + if (TxCenter.Opposite === state.rotatePivot) { + const i3 = (i1 + iHalf) % n; // opposite corner + let i2 = i3 - 1; + if (i2 < 0) i2 += n; + + const c2 = corners[i2]; + const c3 = corners[i3]; + rotCenter = midpoint(point(c2), point(c3)); + } + + rotateCenters[i1] = rotCenter.geometry.coordinates; + headings[i1] = bearing(rotCenter, rotPoint); + } + + state.rotation = { + feature0: polygon, // initial feature state + centers: rotateCenters, + headings, // rotation start heading for each point + }; + + // compute current distances from centers for scaling + + const scaleCenters = []; + const distances = []; + for (let i = 0; i < n; i++) { + const c1 = corners[i]; + let c0 = center0.geometry.coordinates; + if (TxCenter.Opposite === state.scaleCenter) { + const i2 = (i + iHalf) % n; // opposite corner + c0 = corners[i2]; + } + scaleCenters[i] = c0; + distances[i] = distance(point(c0), point(c1), { units: 'meters' }); + } + + // var distances = polygon.geometry.coordinates[0].map((c) => + // turf.distance(center, turf.point(c), { units: 'meters'}) ); + + state.scaling = { + feature0: polygon, // initial feature state + centers: scaleCenters, + distances, + }; +}; + +TxRectMode.onDrag = function (state, e) { + if (state.canDragMove !== true) return; + state.dragMoving = true; + e.originalEvent.stopPropagation(); + + const delta = { + lng: e.lngLat.lng - state.dragMoveLocation.lng, + lat: e.lngLat.lat - state.dragMoveLocation.lat, + }; + if (state.selectedCoordPaths.length > 0 && state.txMode) { + switch (state.txMode) { + case TxMode.Rotate: + this.dragRotatePoint(state, e, delta); + break; + case TxMode.Scale: + this.dragScalePoint(state, e, delta); + break; + case TxMode.Resize: + this.dragResizePoint(state, e, delta); + break; + } + } else { + this.dragFeature(state, e, delta); + } + + state.dragMoveLocation = e.lngLat; +}; + +TxRectMode.dragResizePoint = function (state, e, delta) { + if (!state.resizing || !state.resizePoint) { + // eslint-disable-next-line no-console + console.error('Resize state or resize point missing'); + return; + } + + const polygon = state.feature.toGeoJSON(); + const coordinates = polygon.geometry.coordinates[0]; + + const resizePointIndex = state.resizePoint.index; + const subCenter = state.resizePoint.center; + + const m1 = [e.lngLat.lng, e.lngLat.lat]; + + // Compute the new width and height adjustments based on the dragged point + const dx = m1[0] - subCenter[0]; + const dy = m1[1] - subCenter[1]; + + // Adjust the affected corner(s) + coordinates[resizePointIndex][0] = subCenter[0] + dx; + coordinates[resizePointIndex][1] = subCenter[1] + dy; + + // Update the other corners to maintain the rectangle's structure + // const oppositeIndex = (resizePointIndex + 2) % 4; + // const adjacentIndex1 = (resizePointIndex + 1) % 4; + // const adjacentIndex2 = (resizePointIndex + 3) % 4; + + // coordinates[adjacentIndex1][0] = coordinates[resizePointIndex][0]; + // coordinates[adjacentIndex2][1] = coordinates[resizePointIndex][1]; + // coordinates[oppositeIndex] = [ + // coordinates[resizePointIndex][0] + (coordinates[oppositeIndex][0] - center[0]), + // coordinates[resizePointIndex][1] + (coordinates[oppositeIndex][1] - center[1]), + // ]; + + // Update the feature's coordinates with the resized rectangle + state.feature.incomingCoords([coordinates]); + + // Fire the update event to notify listeners + this.fireUpdate(); +}; + +TxRectMode.dragRotatePoint = function (state, e, delta) { + // console.log('dragRotateVertex: ' + e.lngLat + ' -> ' + state.dragMoveLocation); + + if (state.rotation === undefined || state.rotation == null) { + // eslint-disable-next-line no-console + console.error('state.rotation required'); + return; + } + + const polygon = state.feature.toGeoJSON(); + const m1 = point([e.lngLat.lng, e.lngLat.lat]); + + const n = state.rotation.centers.length; + const cIdx = (this.coordinateIndex(state.selectedCoordPaths) + 1) % n; + // TODO validate cIdx + const cCenter = state.rotation.centers[cIdx]; + const subcenter = point(cCenter); + + const heading1 = bearing(center, m1); + + const heading0 = state.rotation.headings[cIdx]; + let rotateAngle = heading1 - heading0; // in degrees + if (CommonSelectors.isShiftDown(e)) { + rotateAngle = 5.0 * Math.round(rotateAngle / 5.0); + } + + const rotatedFeature = transformRotate( + state.rotation.feature0, + rotateAngle, + { + pivot: subcenter, + mutate: false, + }, + ); + + state.feature.incomingCoords(rotatedFeature.geometry.coordinates); + // TODO add option for this: + this.fireUpdate(); +}; + +TxRectMode.dragScalePoint = function (state, e, delta) { + if (state.scaling === undefined || state.scaling == null) { + // eslint-disable-next-line no-console + console.error('state.scaling required'); + return; + } + + const polygon = state.feature.toGeoJSON(); + + const cIdx = this.coordinateIndex(state.selectedCoordPaths); + // TODO validate cIdx + + const cCenter = state.scaling.centers[cIdx]; + const subcenter = point(cCenter); + const m1 = point([e.lngLat.lng, e.lngLat.lat]); + + const dist = distance(subcenter, m1, { units: 'meters' }); + let scale = dist / state.scaling.distances[cIdx]; + + if (CommonSelectors.isShiftDown(e)) { + // TODO discrete scaling + scale = 0.05 * Math.round(scale / 0.05); + } + + const scaledFeature = transformScale( + state.scaling.feature0, + scale, + { + origin: cCenter, + mutate: false, + }, + ); + + state.feature.incomingCoords(scaledFeature.geometry.coordinates); + // TODO add option for this: + this.fireUpdate(); +}; + +TxRectMode.dragFeature = function (state, e, delta) { + moveFeatures(this.getSelected(), delta); + state.dragMoveLocation = e.lngLat; + // TODO add option for this: + this.fireUpdate(); +}; + +TxRectMode.fireUpdate = function () { + this.map.fire(Constants.events.UPDATE, { + action: Constants.updateActions.CHANGE_COORDINATES, + features: this.getSelected().map((f) => f.toGeoJSON()), + }); +}; + +TxRectMode.onMouseOut = function (state) { + // As soon as you mouse leaves the canvas, update the feature + if (state.dragMoving) { + this.fireUpdate(); + } +}; + +TxRectMode.onTouchEnd = TxRectMode.onMouseUp = function (state) { + if (state.dragMoving) { + this.fireUpdate(); + } + this.stopDragging(state); +}; + +TxRectMode.clickActiveFeature = function (state) { + state.selectedCoordPaths = []; + this.clearSelectedCoordinates(); + state.feature.changed(); +}; + +TxRectMode.onClick = function (state, e) { + if (CommonSelectors.noTarget(e)) return this.clickNoTarget(state, e); + if (CommonSelectors.isActiveFeature(e)) return this.clickActiveFeature(state, e); + if (CommonSelectors.isInactiveFeature(e)) return this.clickInactive(state, e); + this.stopDragging(state); +}; + +TxRectMode.clickNoTarget = function (state, e) { + if (state.canSelectFeatures) this.changeMode(Constants.modes.SIMPLE_SELECT); +}; + +TxRectMode.clickInactive = function (state, e) { + if (state.canSelectFeatures) { + this.changeMode(Constants.modes.SIMPLE_SELECT, { + featureIds: [e.featureTarget.properties.id], + }); + } +}; + +TxRectMode.onTrash = function () { + // TODO check state.canTrash + this.deleteFeature(this.getSelectedIds()); + // this.fireActionable(); +}; + +export const drawStyle = [ + { + id: 'gl-draw-polygon-fill-inactive', + type: 'fill', + filter: ['all', + ['==', 'active', 'false'], + ['==', '$type', 'Polygon'], + ['!=', 'user_type', 'overlay'], + ['!=', 'mode', 'static'], + ], + paint: { + 'fill-color': '#3bb2d0', + 'fill-outline-color': '#3bb2d0', + 'fill-opacity': 0.7, + }, + }, + { + id: 'gl-draw-polygon-fill-active', + type: 'fill', + filter: ['all', + ['==', 'active', 'true'], + ['==', '$type', 'Polygon'], + ['!=', 'user_type', 'overlay'], + ], + paint: { + 'fill-color': '#fbb03b', + 'fill-outline-color': '#fbb03b', + 'fill-opacity': 0.7, + }, + }, + + { + id: 'gl-draw-overlay-polygon-fill-inactive', + type: 'fill', + filter: ['all', + ['==', 'active', 'false'], + ['==', '$type', 'Polygon'], + ['==', 'user_type', 'overlay'], + ['!=', 'mode', 'static'], + ], + paint: { + 'fill-color': '#3bb2d0', + 'fill-outline-color': '#3bb2d0', + 'fill-opacity': 0.01, + }, + }, + { + id: 'gl-draw-overlay-polygon-fill-active', + type: 'fill', + filter: ['all', + ['==', 'active', 'true'], + ['==', '$type', 'Polygon'], + ['==', 'user_type', 'overlay'], + ], + paint: { + 'fill-color': '#fbb03b', + 'fill-outline-color': '#fbb03b', + 'fill-opacity': 0.01, + }, + }, + + { + id: 'gl-draw-polygon-stroke-inactive', + type: 'line', + filter: ['all', + ['==', 'active', 'false'], + ['==', '$type', 'Polygon'], + ['!=', 'user_type', 'overlay'], + ['!=', 'mode', 'static'], + ], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#3bb2d0', + 'line-width': 2, + }, + }, + + { + id: 'gl-draw-polygon-stroke-active', + type: 'line', + filter: ['all', + ['==', 'active', 'true'], + ['==', '$type', 'Polygon'], + ], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#fbb03b', + 'line-dasharray': [0.2, 2], + 'line-width': 2, + }, + }, + + // { + // 'id': 'gl-draw-polygon-midpoint', + // 'type': 'circle', + // 'filter': ['all', + // ['==', '$type', 'Point'], + // ['==', 'meta', 'midpoint']], + // 'paint': { + // 'circle-radius': 3, + // 'circle-color': '#fbb03b' + // } + // }, + + { + id: 'gl-draw-line-inactive', + type: 'line', + filter: ['all', + ['==', 'active', 'false'], + ['==', '$type', 'LineString'], + ['!=', 'mode', 'static'], + ], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#3bb2d0', + 'line-width': 2, + }, + }, + { + id: 'gl-draw-line-active', + type: 'line', + filter: ['all', + ['==', '$type', 'LineString'], + ['==', 'active', 'true'], + ], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#fbb03b', + 'line-dasharray': [0.2, 2], + 'line-width': 2, + }, + }, + { + id: 'gl-draw-polygon-and-line-vertex-stroke-inactive', + type: 'circle', + filter: ['all', + ['==', 'meta', 'vertex'], + ['==', '$type', 'Point'], + ['!=', 'mode', 'static'], + ], + paint: { + 'circle-radius': 4, + 'circle-color': '#fff', + }, + }, + { + id: 'gl-draw-polygon-and-line-vertex-inactive', + type: 'circle', + filter: ['all', + ['==', 'meta', 'vertex'], + ['==', '$type', 'Point'], + ['!=', 'mode', 'static'], + ], + paint: { + 'circle-radius': 2, + 'circle-color': '#fbb03b', + }, + }, + + { + id: 'gl-draw-polygon-and-line-vertex-scale-icon', + type: 'symbol', + filter: ['all', + ['==', 'meta', 'vertex'], + ['==', '$type', 'Point'], + ['!=', 'mode', 'static'], + ['has', 'heading'], + ], + layout: { + 'icon-image': 'scale', + 'icon-allow-overlap': true, + 'icon-ignore-placement': true, + 'icon-rotation-alignment': 'map', + 'icon-rotate': ['get', 'heading'], + }, + paint: { + 'icon-opacity': 1.0, + 'icon-opacity-transition': { + delay: 0, + duration: 0, + }, + }, + }, + + { + id: 'gl-draw-point-point-stroke-inactive', + type: 'circle', + filter: ['all', + ['==', 'active', 'false'], + ['==', '$type', 'Point'], + ['==', 'meta', 'feature'], + ['!=', 'mode', 'static'], + ], + paint: { + 'circle-radius': 5, + 'circle-opacity': 1, + 'circle-color': '#fff', + }, + }, + { + id: 'gl-draw-point-inactive', + type: 'circle', + filter: ['all', + ['==', 'active', 'false'], + ['==', '$type', 'Point'], + ['==', 'meta', 'feature'], + ['!=', 'mode', 'static'], + ], + paint: { + 'circle-radius': 3, + 'circle-color': '#3bb2d0', + }, + }, + { + id: 'gl-draw-point-stroke-active', + type: 'circle', + filter: ['all', + ['==', '$type', 'Point'], + ['==', 'active', 'true'], + ['!=', 'meta', 'midpoint'], + ], + paint: { + 'circle-radius': 4, + 'circle-color': '#fff', + }, + }, + { + id: 'gl-draw-point-active', + type: 'circle', + filter: ['all', + ['==', '$type', 'Point'], + ['!=', 'meta', 'midpoint'], + ['==', 'active', 'true']], + paint: { + 'circle-radius': 2, + 'circle-color': '#fbb03b', + }, + }, + { + id: 'gl-draw-polygon-fill-static', + type: 'fill', + filter: ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']], + paint: { + 'fill-color': '#404040', + 'fill-outline-color': '#404040', + 'fill-opacity': 0.1, + }, + }, + { + id: 'gl-draw-polygon-stroke-static', + type: 'line', + filter: ['all', ['==', 'mode', 'static'], ['==', '$type', 'Polygon']], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#404040', + 'line-width': 2, + }, + }, + { + id: 'gl-draw-line-static', + type: 'line', + filter: ['all', ['==', 'mode', 'static'], ['==', '$type', 'LineString']], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#404040', + 'line-width': 2, + }, + }, + { + id: 'gl-draw-point-static', + type: 'circle', + filter: ['all', ['==', 'mode', 'static'], ['==', '$type', 'Point']], + paint: { + 'circle-radius': 5, + 'circle-color': '#404040', + }, + }, + + // { + // 'id': 'gl-draw-polygon-rotate-point', + // 'type': 'circle', + // 'filter': ['all', + // ['==', '$type', 'Point'], + // ['==', 'meta', 'rotate_point']], + // 'paint': { + // 'circle-radius': 5, + // 'circle-color': '#fbb03b' + // } + // }, + + { + id: 'gl-draw-line-rotate-point', + type: 'line', + filter: ['all', + ['==', 'meta', 'midpoint'], + ['==', '$type', 'LineString'], + ['!=', 'mode', 'static'], + // ['==', 'active', 'true'] + ], + layout: { + 'line-cap': 'round', + 'line-join': 'round', + }, + paint: { + 'line-color': '#fbb03b', + 'line-dasharray': [0.2, 2], + 'line-width': 2, + }, + }, + { + id: 'gl-draw-polygon-rotate-point-stroke', + type: 'circle', + filter: ['all', + ['==', 'meta', 'midpoint'], + ['==', '$type', 'Point'], + ['!=', 'mode', 'static'], + ], + paint: { + 'circle-radius': 4, + 'circle-color': '#fff', + }, + }, + { + id: 'gl-draw-polygon-rotate-point', + type: 'circle', + filter: ['all', + ['==', 'meta', 'midpoint'], + ['==', '$type', 'Point'], + ['!=', 'mode', 'static'], + ], + paint: { + 'circle-radius': 2, + 'circle-color': '#fbb03b', + }, + }, + { + id: 'gl-draw-polygon-rotate-point-icon', + type: 'symbol', + filter: ['all', + ['==', 'meta', 'midpoint'], + ['==', '$type', 'Point'], + ['!=', 'mode', 'static'], + ], + layout: { + 'icon-image': 'rotate', + 'icon-allow-overlap': true, + 'icon-ignore-placement': true, + 'icon-rotation-alignment': 'map', + 'icon-rotate': ['get', 'heading'], + }, + paint: { + 'icon-opacity': 1.0, + 'icon-opacity-transition': { + delay: 0, + duration: 0, + }, + }, + }, +]; diff --git a/client/src/components/FeatureSelection/RenderFeatureChart.vue b/client/src/components/FeatureSelection/RenderFeatureChart.vue new file mode 100644 index 0000000..5fd08b3 --- /dev/null +++ b/client/src/components/FeatureSelection/RenderFeatureChart.vue @@ -0,0 +1,79 @@ + + + + + diff --git a/client/src/components/FeatureSelection/SelectedFeature.vue b/client/src/components/FeatureSelection/SelectedFeature.vue new file mode 100644 index 0000000..1838195 --- /dev/null +++ b/client/src/components/FeatureSelection/SelectedFeature.vue @@ -0,0 +1,149 @@ + + + + + diff --git a/client/src/components/FeatureSelection/SelectedFeatureList.vue b/client/src/components/FeatureSelection/SelectedFeatureList.vue new file mode 100644 index 0000000..b8cf066 --- /dev/null +++ b/client/src/components/FeatureSelection/SelectedFeatureList.vue @@ -0,0 +1,49 @@ + + + + + diff --git a/client/src/components/FilterKey.vue b/client/src/components/FilterKey.vue new file mode 100644 index 0000000..277ec60 --- /dev/null +++ b/client/src/components/FilterKey.vue @@ -0,0 +1,111 @@ + + + diff --git a/client/src/components/Filtering/AddingFilter.vue b/client/src/components/Filtering/AddingFilter.vue new file mode 100644 index 0000000..78256cb --- /dev/null +++ b/client/src/components/Filtering/AddingFilter.vue @@ -0,0 +1,442 @@ + + + + + diff --git a/client/src/components/Filtering/FilteringEditor.vue b/client/src/components/Filtering/FilteringEditor.vue new file mode 100644 index 0000000..4b4264a --- /dev/null +++ b/client/src/components/Filtering/FilteringEditor.vue @@ -0,0 +1,356 @@ + + + + + diff --git a/client/src/components/Filtering/FilteringInteraction.vue b/client/src/components/Filtering/FilteringInteraction.vue new file mode 100644 index 0000000..fb6ae8a --- /dev/null +++ b/client/src/components/Filtering/FilteringInteraction.vue @@ -0,0 +1,122 @@ + + + + + diff --git a/client/src/components/Filtering/FilteringSelector.vue b/client/src/components/Filtering/FilteringSelector.vue new file mode 100644 index 0000000..afdebfd --- /dev/null +++ b/client/src/components/Filtering/FilteringSelector.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/client/src/components/FilteringConfig.vue b/client/src/components/FilteringConfig.vue new file mode 100644 index 0000000..540e1a3 --- /dev/null +++ b/client/src/components/FilteringConfig.vue @@ -0,0 +1,168 @@ + + + + + diff --git a/client/src/components/Heatmap/HeatmapColorEditor.vue b/client/src/components/Heatmap/HeatmapColorEditor.vue new file mode 100644 index 0000000..89cf0b8 --- /dev/null +++ b/client/src/components/Heatmap/HeatmapColorEditor.vue @@ -0,0 +1,218 @@ + + + + + diff --git a/client/src/components/Heatmap/HeatmapLayerControls.vue b/client/src/components/Heatmap/HeatmapLayerControls.vue new file mode 100644 index 0000000..8d292b2 --- /dev/null +++ b/client/src/components/Heatmap/HeatmapLayerControls.vue @@ -0,0 +1,389 @@ + + + + + + diff --git a/client/src/components/Heatmap/HeatmapWeightIntensity.vue b/client/src/components/Heatmap/HeatmapWeightIntensity.vue new file mode 100644 index 0000000..00f1556 --- /dev/null +++ b/client/src/components/Heatmap/HeatmapWeightIntensity.vue @@ -0,0 +1,344 @@ + + + + + diff --git a/client/src/components/Indicators/IndicatorFilterableList.vue b/client/src/components/Indicators/IndicatorFilterableList.vue new file mode 100644 index 0000000..a98580a --- /dev/null +++ b/client/src/components/Indicators/IndicatorFilterableList.vue @@ -0,0 +1,144 @@ + + + + + diff --git a/client/src/components/Indicators/IndicatorListItem.vue b/client/src/components/Indicators/IndicatorListItem.vue new file mode 100644 index 0000000..ab9b19b --- /dev/null +++ b/client/src/components/Indicators/IndicatorListItem.vue @@ -0,0 +1,91 @@ + + + + + diff --git a/client/src/components/LayerConfig.vue b/client/src/components/LayerConfig.vue new file mode 100644 index 0000000..40a210b --- /dev/null +++ b/client/src/components/LayerConfig.vue @@ -0,0 +1,223 @@ + + + + + diff --git a/client/src/components/LayerRepresentation/LayerRepresentation.vue b/client/src/components/LayerRepresentation/LayerRepresentation.vue new file mode 100644 index 0000000..e6a0a27 --- /dev/null +++ b/client/src/components/LayerRepresentation/LayerRepresentation.vue @@ -0,0 +1,224 @@ + + + + + + diff --git a/client/src/components/LayerTypeConfig.vue b/client/src/components/LayerTypeConfig.vue new file mode 100644 index 0000000..6b3a0e4 --- /dev/null +++ b/client/src/components/LayerTypeConfig.vue @@ -0,0 +1,698 @@ + + + + + + diff --git a/client/src/components/Map.vue b/client/src/components/Map.vue new file mode 100644 index 0000000..4d06a46 --- /dev/null +++ b/client/src/components/Map.vue @@ -0,0 +1,269 @@ + + + + + diff --git a/client/src/components/MapLegend.vue b/client/src/components/MapLegend.vue new file mode 100644 index 0000000..ed49c9b --- /dev/null +++ b/client/src/components/MapLegend.vue @@ -0,0 +1,99 @@ + + + + + diff --git a/client/src/components/MapTypePicker.vue b/client/src/components/MapTypePicker.vue new file mode 100644 index 0000000..34fe0f7 --- /dev/null +++ b/client/src/components/MapTypePicker.vue @@ -0,0 +1,51 @@ + + + diff --git a/client/src/components/Metadata/AvailableProperties.vue b/client/src/components/Metadata/AvailableProperties.vue new file mode 100644 index 0000000..019c54d --- /dev/null +++ b/client/src/components/Metadata/AvailableProperties.vue @@ -0,0 +1,107 @@ + + + + + diff --git a/client/src/components/Metadata/FeatureChartEditor.vue b/client/src/components/Metadata/FeatureChartEditor.vue new file mode 100644 index 0000000..03045ac --- /dev/null +++ b/client/src/components/Metadata/FeatureChartEditor.vue @@ -0,0 +1,313 @@ + + + + + diff --git a/client/src/components/Metadata/MetadataConfig.vue b/client/src/components/Metadata/MetadataConfig.vue new file mode 100644 index 0000000..a6e8e1b --- /dev/null +++ b/client/src/components/Metadata/MetadataConfig.vue @@ -0,0 +1,345 @@ + + + + + diff --git a/client/src/components/Metadata/MetadataSettings.vue b/client/src/components/Metadata/MetadataSettings.vue new file mode 100644 index 0000000..9216606 --- /dev/null +++ b/client/src/components/Metadata/MetadataSettings.vue @@ -0,0 +1,129 @@ + + + + + diff --git a/client/src/components/Metadata/SelectedFeatureChartCard.vue b/client/src/components/Metadata/SelectedFeatureChartCard.vue new file mode 100644 index 0000000..b0f9c6c --- /dev/null +++ b/client/src/components/Metadata/SelectedFeatureChartCard.vue @@ -0,0 +1,162 @@ + + + + + diff --git a/client/src/components/Metadata/SelectedFeatureCharts.vue b/client/src/components/Metadata/SelectedFeatureCharts.vue new file mode 100644 index 0000000..560d5f6 --- /dev/null +++ b/client/src/components/Metadata/SelectedFeatureCharts.vue @@ -0,0 +1,121 @@ + + + + diff --git a/client/src/components/Metadata/drawChart.ts b/client/src/components/Metadata/drawChart.ts new file mode 100644 index 0000000..45f7e39 --- /dev/null +++ b/client/src/components/Metadata/drawChart.ts @@ -0,0 +1,207 @@ +/* eslint-disable func-names */ +/* eslint-disable import/prefer-default-export */ +import * as d3 from 'd3'; + +export function drawBarChart( + id: string, + data: { key: string; value: number; color?: string }[], + sortOption: 'value' | 'name' | 'static', + keyStaticLabels: boolean, + keyHighlightLabels: boolean, + maxWidth = 300, // Optional max width for the chart, default is 300px +) { + // Sort the data based on the sort option + if (sortOption === 'value') { + data.sort((a, b) => b.value - a.value); + } else if (sortOption === 'name') { + data.sort((a, b) => a.key.localeCompare(b.key)); + } + + const svgContainer = d3.select(`#${id}`); + svgContainer.select('svg').remove(); + + let maxLabelWidth = 0; + if (keyStaticLabels) { + const tempSvg = svgContainer.append('svg').attr('visibility', 'hidden'); + const tempText = tempSvg + .selectAll('text') + .data(data) + .enter() + .append('text') + .style('font-size', '10px') + .text((d) => d.key); + tempText.each(function () { + const textWidth = this.getBBox().width; + if (textWidth > maxLabelWidth) { + maxLabelWidth = textWidth; + } + }); + tempSvg.remove(); + } + + const margin = { + top: 20, + right: 30, + bottom: 40, + left: keyStaticLabels ? maxLabelWidth + 10 : 0, + }; + const width = maxWidth - margin.left - margin.right; + const minHeight = 25; + const numBars = data.length; + const height = Math.max(numBars * minHeight, 300) - margin.top - margin.bottom; + + const maxValue = d3.max(data, (d) => d.value)!; + const minValue = d3.min(data, (d) => d.value)!; + + const svg = svgContainer + .append('svg') + .attr('width', width + margin.left + margin.right) + .attr('height', height + margin.top + margin.bottom) + .append('g') + .attr('transform', `translate(${margin.left},${margin.top})`); + + svg.append('g').attr('class', 'x-axis').attr('transform', `translate(0,${height})`); + svg.append('g').attr('class', 'y-axis'); + + const x = d3.scaleLinear().domain([minValue, maxValue]).range([0, width]); + const y = d3 + .scaleBand() + .domain(data.map((d) => d.key)) + .range([0, height]) + .padding(0.1); + + svg.select('.x-axis').call(d3.axisBottom(x)); + const yAxis = d3.axisLeft(y); + + if (!keyStaticLabels) { + yAxis.tickFormat(() => ''); + } + + const yAxisSelection = svg.select('.y-axis').call(yAxis); + + const bars = svg.selectAll('rect').data(data); + bars.exit().remove(); + + // Animate the bars from 0 to the current value + bars + .enter() + .append('rect') + .attr('x', 0) + .attr('y', (d) => y(d.key)!) + .attr('width', 0) // Start with a width of 0 + .attr('height', y.bandwidth()) + .attr('fill', (d) => d.color || 'steelblue') + .merge(bars) + .transition() + .duration(1000) + .attr('width', (d) => x(d.value)); + + // Update existing bars + bars + .transition() + .duration(1000) + .attr('y', (d) => y(d.key)!) + .attr('width', (d) => x(d.value)) + .attr('height', y.bandwidth()) + .attr('fill', (d) => d.color || 'steelblue'); + + // Create tooltip once, don't remove it, just hide/show it dynamically + let tooltip = svg.select('#tooltip'); + if (tooltip.empty()) { + tooltip = svg + .append('text') + .attr('id', 'tooltip') + .attr('fill', 'black') + .style('font-size', '10px') + .style('font-weight', 'bold') + .style('visibility', 'hidden'); // Initially hidden + } + + const highlightBar = (d: { key: string; value: number; color?: string }) => { + svg + .selectAll('rect') + .filter((barData) => barData.key === d.key) + .attr('fill', 'cyan'); + + const barHeight = y.bandwidth(); + const yPosition = y(d.key)! + barHeight / 2 + 3; + + tooltip + .attr('x', 10) // Position outside the bar to avoid hover flicker + .attr('y', yPosition) + .text(`${d.key}: ${d.value.toFixed(2)}`) + .style('visibility', 'visible'); + }; + + let highlightedRect: boolean | { left: number; right: number; top: number; bottom: number } = false; + const resetBar = (d: { key: string; value: number; color?: string }) => { + svg + .selectAll('rect') + .filter((barData) => barData.key === d.key) + .attr('fill', d.color || 'steelblue'); + tooltip.style('visibility', 'hidden'); + highlightedRect = false; + }; + + if (keyHighlightLabels) { + svg + .selectAll('rect') + .on('mouseover', (event, d) => { + highlightedRect = event.target.getBoundingClientRect(); + highlightBar(d); + }) + .on('mouseout', (event, d) => { + const bounds = highlightedRect; + const mouseX = event.clientX; + const mouseY = event.clientY; + + // Check if the mouse is outside the bounds of the rectangle + if (bounds) { + const isInside = mouseX > bounds.left + && mouseX < bounds.right + && mouseY > bounds.top + && mouseY < bounds.bottom; + if (isInside) { + return; + } + } + resetBar(d); + }); + + // Add hover events to the Y-axis tick labels + yAxisSelection + .selectAll('.tick text') + .on('mouseover', (event, d) => { + const hoveredKey = d as string; + const barData = data.find((bar) => bar.key === hoveredKey); + if (barData) { + highlightBar(barData); + } + }) + .on('mouseout', (event, d) => { + const hoveredKey = d as string; + const barData = data.find((bar) => bar.key === hoveredKey); + if (barData) { + resetBar(barData); + } + }); + } else { + svg.selectAll('rect').on('mouseover', null).on('mouseout', null); + yAxisSelection.selectAll('.tick text').on('mouseover', null).on('mouseout', null); + } + const xAxisLabels = svg.select('.x-axis').selectAll('text'); + + const labelWidth = Math.max(...xAxisLabels.nodes().map((node) => node.getBBox().width)); + const availableWidth = width / data.length; // Width for each bar + + if (labelWidth > availableWidth) { + // Remove middle labels, keeping only the first and last + const ticks = svg.select('.x-axis').selectAll('.tick text'); + + ticks.each(function (d, i) { + if (i !== 0 && i !== ticks.nodes().length - 1) { + d3.select(this).remove(); + } + }); + } +} diff --git a/client/src/components/NetCDFLayerConfig.vue b/client/src/components/NetCDFLayerConfig.vue new file mode 100644 index 0000000..28972df --- /dev/null +++ b/client/src/components/NetCDFLayerConfig.vue @@ -0,0 +1,138 @@ + + + + + diff --git a/client/src/components/PopupComponent.vue b/client/src/components/PopupComponent.vue new file mode 100644 index 0000000..06057d3 --- /dev/null +++ b/client/src/components/PopupComponent.vue @@ -0,0 +1,117 @@ + + +